Addressing, Granularity, and Coherency
Windows NT requires that all processors see a view of memory which is always consistent, regardless of what caching is going on. This consistency must be maintained at a byte granular level.
Ideally, I/O operations are also coherent with memory. Windows NT can run on systems in which memory is not coherent with respect to I/O. However, the multi-processor cache flushing this requires is quite expensive. (An IPI must be sent to all processors other than the initiator telling them to flush caches, and the initiator must spin-wait for them to finish their flushes, before the I/O can be started).
Windows NT also supports flushing of instruction caches after operations that edit the instruction stream, so instruction caches need not snoop data writes for the sake of Windows NT. (Note, however, that existing 80x86 application software may edit code streams and will not call the instruction cache flush service, so instruction caches will need to snoop data writes to fully support existing software on the 386 and i486).
All of memory must be accessible to all processors (except processor local storage described above).
Memory need not be physically contiguous, but should be if possible. In any case, no piece of contiguous physical memory should be less than 64K.
Minimum amounts of total memory, contiguous memory, and memory located at particular physical addresses will be required to boot Windows NT. The requirements vary with the type of the central processing unit.