Specifications
Intel
®
Quark SoC X1000 Core
October 2013 Developer’s Manual
Order Number: 329679-001US 37
Architectural Overview—Intel
®
Quark Core
As the Intel
®
Quark SoC X1000 Core executes instructions, it follows a consistent cycle
in checking for exceptions. Consider the case of the Intel
®
Quark SoC X1000 Core
having just completed an instruction. It then performs the checks listed in Table 7
before reaching the point where the next instruction is completed. This cycle is
repeated as each instruction is executed, and occurs in parallel with instruction
decoding and execution. Checking for EM, TS, or FPU error status only occurs for
processors with on-chip Floating-Point Units.
3.7.7 Instruction Restart
The Intel
®
Quark SoC X1000 Core fully supports restarting all instructions after faults.
If an exception is detected in the instruction to be executed (exception categories 4
through 10 in Table 8), the Intel
®
Quark SoC X1000 Core invokes the appropriate
exception service routine.
The Intel
®
Quark SoC X1000 Core is in a state that permits restart of the instruction,
for all cases except the following. An instruction causes a task switch to a task whose
Task State Segment is partially “not present.” (An entirely “not present” TSS is
restartable.) Partially present TSSs can be avoided either by keeping the TSSs of such
tasks present in memory, or by aligning TSS segments to reside entirely within a single
4 K page (for TSS segments of 4 Kbytes or less).
Note: Partially present task state segments can be easily avoided by proper design of the
operating system.
Table 7. Sequence of Exception Checking
Sequence Description
1
Check for Exception 1 Traps from the instruction just completed (single-step via Trap Flag, or
Data Breakpoints set in the Debug Registers).
2
Check for Exception 1 Faults in the next instruction (Instruction Execution Breakpoint set in
the Debug Registers for the next instruction).
3 Check for external NMI and INTR.
4
Check for Segmentation Faults that prevented fetching the entire next instruction
(exceptions 11 or 13).
5 Check for Page Faults that prevented fetching the entire next instruction (exception 14).
6
Check for Faults decoding the next instruction (exception 6 if illegal opcode; exception 6 if in
Real Mode or in Virtual 8086 Mode and attempting to execute an instruction for Protected
Mode only (see Section 6.5.4, “Protection and I/O Permission Bitmap” on page 109); or
exception 13 if instruction is longer than 15 bytes, or privilege violation in Protected Mode
(i.e., not at IOPL or at CPL=0).
7 If WAIT opcode, check if TS=1 and MP=1 (exception 7 if both are 1).
8 If opcode for Floating-Point Unit, check if EM=1 or TS=1 (exception 7 if either are 1).
9
If opcode for Floating-Point Unit (FPU), check FPU error status (exception 16 if error status is
asserted).
10
Check in the following order for each memory reference required by the instruction:
a. Check for Segmentation Faults that prevent transferring the entire memory quantity
(exceptions 11, 12, 13).
b. Check for Page Faults that prevent transferring the entire memory quantity (exception
14).
Note: The order stated supports the concept of the paging mechanism being “underneath” the
segmentation mechanism. Therefore, for any given code or data reference in memory,
segmentation exceptions are generated before paging exceptions are generated.










