The ISA is the actual instruction set and how the CPU works. The exact rules vary between different CPU architectures. Probably the two biggest you might have heard of so far are x86 (32 and 64 bit variants), and ARM.
The ISA of ARM includes details like there are, I believe, 32 registers numbered 0 to 31, and all CPU instructions are exact 4 bytes large. However there is an alternative, optional mode called Thumb mode which makes instructions only 2 bytes each, at the expense that the available instructions are much more limited. Whereas x86 (in 32 bit mode) has a much smaller selection of registers, they have names written as a sequence of letters, with a designated stack pointer register, etc. Instruction lengths vary wildly to the point that I don’t know what the maximum is.
But that’s the hardware, and information that comes in the hardware manufacturer’s manual. Now we come to the software, the kernel. It’s the program that runs on the CPU directly, manages its features, and runs applications under itself with all the security and isolation we’ve come to expect. Programs can’t access RAM belonging to another program, and accessing RAM not assigned to you crashes the application.
However, HOW these functions are implemented will depend on the CPU and ISA that goes with it. Memory is assigned to applications by the kernel, but protection is enforced by the CPU, so the kernel must adopt what is available to it. Eg: x86 has page sizes of 4 kilobytes, 2 megabytes, or 1 gigabyte, but ARM supports 4 kilobytes, 64 kilobytes, and 1 megabyte. The ISA specifies these as available, and how to select the page size, and it’s on the kernel to actually do so to the benefit of the application and its needs.
Latest Answers