Method for Handling Unaligned Operands that Extend Across Memory Protection Boundaries in a Microprocessor
Original Publication Date: 1994-Apr-01
Included in the Prior Art Database: 2005-Mar-27
Moore, CR: AUTHOR [+3]
The following discloses a technique for handling unaligned operands that cross a memory protection boundary in a microprocessor.
Method for Handling Unaligned Operands that Extend Across
Protection Boundaries in a Microprocessor
discloses a technique for handling unaligned
operands that cross a memory protection boundary in a microprocessor.
operand is one that is located in memory on an
address that is not a multiple of the size of the operand. For
example, a 4 byte operand that is located at an address that is a
multiple of 4 is considered to be aligned. A 4 byte operand that is
located at an address that is a multiple of 2 but not a multiple of 4
is considered to be unaligned. Single byte operands are always
aligned. Double byte, word (4 bytes) and double word (8 bytes)
operands may be aligned or unaligned depending the address of their
location in memory.
operands may cross protection domains and therefore
present several implementation difficulties for microprocessors. A
protection domain is a region of memory (such as a page) that has the
same access characteristics (such as 'read/write' or 'read only').
under development had certain design constraints
that any method of handling unaligned operands must conform to:
first, operands that crossed a double word or larger boundary were
split into 2 pieces (one piece for each double word); second, the
memory subsystem required that the second piece of the unaligned
access must always follow the first piece. The consequence of this
was that if an access violation was going to occur on the second
piece, it had to be detected before the first piece was sent to the
complicating factor was that there were 2 types of protection
domains to consider: a page (4KB) and a segment (256MB). Some types
of aligned accesses were allowed to cross a page boundary, but not a