Download presentation source

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Chapter 2 - The CRA-1
• Useful while learning OS basics to use a
reference computer system
• Book creates a Composite RISC
Architecture (CRA-1) computer system
(implicit homage to Cray-1? :)
• Simple organization: Figure 2.1
– CRA-1 CPU
• 32 general-purpose 32-bit registers, r0 through r31
• Note register usage on page 17
• CRA-1 CPU (continued)
• 9 control registers:
– ia = instruction address register (Program Counter)
– psw = program status word (1 bit for system/user mode; 1 bit
for interrupts enabled/disabled)
– base = per memory reference adder value
– bound = per memory reference upper bounds check
– iia = interrupt instruction address register; holds value of ia
before an interrupt is taken
– ipsw = interrupt program status word; holds value of psw
before an interrupt is taken
– ip = interrupt parameter register; info about last interrupt
– iva = interrupt vector address register; address of the
interrupt vector table (jump table)
– timer = interrupt timer register (autodecremented once every
µsecond); timer interrupt automatically occurs when timer
reaches 0
• CRA-1 CPU (continued)
– Processor supports dual-mode operation:
• System mode (bit 0 of psw = 0) - all instructions are
legal and all addresses are physical (base and bound
are not used)
• User mode (bit 0 of psw = 1) - instructions that
modify control registers are illegal; all addresses must
be less than bound and have base added to them
– Subset of instructions that are important to OS:
• Table 2.1 - note interesting ones:
–
–
–
–
–
loadAll
storeAll
move
syscall
rti
address ; load all 32 regs in one shot
address ; store all 32 regs in one shot
rM,rN ; move any reg to any other reg
; request sys service via S/W interrupt
; return from interrupt (restore psw, etc.)
• CRA-1 CPU (continued)
– Note use of asm directive to place in-line
assembly code in the middle of, say, C++ code:
SetTimer(int TimerValue) {
asm {
move timerValue,timer
}
}
• CRA-1 Memory
– byte-addressed machine
– 32-bit addresses
– Simple form of memory protection using base
and bound when in user mode; if either fails
program is aborted and ip is set to 2
• CRA-1 Memory
– Memory address space is from absolute address 0
to absolute address 0xEFFF FFFF
– I/O address space is from abs 0xF000 0000 to
0xFFFF FFFF
– Consider the machine to only have 16 MB, in
which case memory address is limited to abs
addresses 0 to 0xFF FFFF
• CRA-1 Interrupt Structure
– An interrupt is an immediate asynchronous
transfer of control caused by an event external to
the CPU
• Interrupt Structure (continued)
– Causes of interrupts:
•
•
•
•
System call (syscall instruction)
Timer expires (value of timer register reaches 0)
Disk I/O completed
Program performed an illegal operation:
– ip = 0 : attempted to execute an undefined instruction
– ip = 1 : attempted to execute a system instruction while in
user mode
– ip = 2 : address out of bounds while in user mode (address is
less than base or greater than bound)
• Interrupt Structure (continued)
• CRA-1 Interrupt Handling - when one of the four
types of interrupts occurs the following steps are taken
(ref. Table 2.2 for interrupt vector table):
– ipsw <- psw (save current program state)
– psw <- 0 (set to system mode; disable future interrupts)
– ip <- interrupt parameter (if appropriate, e.g. - program
error)
– iia <- ia (save current execution address)
– ia <- (interruptNumber * 4) + iva (control passes to the
appropriate interrupt routine via the interrupt vector table)
• After the interrupt handler routine is done, it issues the
rti instruction, which returns control & state to the
point of execution prior to the interrupt
– ia <- iia
– psw <- ipws
– Restore any regs that may have been used
• Interrupt Structure (continued)
– If bit 1 of psw = 0, interrupts are masked
(recorded but not taken until interrupts are reenabled)
– Only the Timer and Disk interrupts are maskable;
the SysCall and ProgramError interrupts are
unmaskable (will always generate an interrupt)
– The Timer interrupt has a higher priority than the
Disk interrupt
– Note that the CRA-1 interrupt structure, while
providing enough structure to demonstrate the
intimate relationship between hardware and the
OS, is pretty simplistic given most computers
• CRA-1 I/O Devices
– Memory-mapped I/O vs Explicit I/O instructions
– Program writes I/O instructions to specific
memory locations and reads other specific
memory addresses to receive information from
I/O devices
– CRA-1 has one disk controller with one hard disk
drive
– Disk drive has 4,096-byte blocks (aka sectors)
– Two I/O commands for disk controller: read
block and write disk block
– Note OS-style C++ code using memory-mapped
I/O in Figure 2.2; Chapter 14 has an excellent
quick overview of “real world” I/O devices