Index
parts,
Counter (74161, 74163),
518
Tristate buffer (74244),
518
A
carry-lookahead. See Carry-lookahead adder
carry-propagate (CPA). See Carry-propagate adder
prefix. See Prefix adder
ripple-carry. See Ripple-carry adder
add immediate (addi),
327,
378
add immediate unsigned (addiu),
552
overflow. See Overflow
two’s complement,
15,
240
underflow. See Underflow
Advanced microarchitecture,
435–
447
branch prediction. See Branch prediction
deep pipelines. See Deep pipelines
multiprocessors. See Multiprocessors
multithreading. See Multithreading
out-of-order processor. See Out-of-order processor
register renaming. See Register renaming
single instruction multiple data. See Single instruction multiple data (SIMD) units
superscalar processor. See Superscalar processor
vector processor. See Single instruction multiple data (SIMD) units
Alignment. See Word alignment
ALU. See Arithmetic/logical unit
ALU decoder truth table,
376
AMAT. See Average memory access time
Application-specific integrated circuits (ASICs),
523
Architecture. See Instruction Set Architecture
Arithmetic,
233–
249,
305–
308,
515.
See also Adders, Addition, Comparator, Divider, Multiplier
adders. See Adders
addition. See Addition
ALU. See Arithmetic/logical unit
comparators. See Comparators
divider. See Divider
division. See Division
multiplier. See Multiplier
rotators. See Rotators
shifters. See Shifters
subtraction. See Subtraction
subtractor.
See Subtractor
underflow. See Addition, Underflow
adder. See Adders
comparator. See Comparators
subtractor. See Subtractor
FPGA, See Field programmable gate array
logic. See Logic arrays
memory. See Memory
ASCII (American Standard Code for Information Interchange) codes,
317
Assembler directives,
333
ASICs. See Application-specific integrated circuits
Assembly language, MIPS. See MIPS assembly language
Average memory access time (AMAT),
467–
468
Asynchronous circuits,
116–
117
Asynchronous resettable registers
Axioms. See Boolean axioms
B
Base 2 number representations. See Binary numbers
Base 8 number representations. See Octal numbers
Base 16 number representations. See Hexadecimal numbers
Block,
digital building. See Digital building blocks
in code,
Baudot, Jean-Maurice-Emile,
317
Biased numbers,
41.
See also Floating point
Binary numbers, –
11.
See also Arithmetic
binary coded decimal,
252
conversion. See Number conversion
floating-point. See Floating-point numbers
sign/magnitude. See Sign/magnitude numbers
two’s complement. See Two’s complement numbers
Binary to decimal conversion,
10–
11
Binary to hexadecimal conversion,
12
Boole, George,
equation simplification,
61–
62
product-of-sums (POS) canonical form,
56
sum-of-products (SOP) canonical form,
54–
55
unconditional (jump),
309
Branch not equal (bne),
308–
309
Branch/control hazards,
407,
413–
416.
See also Hazards
“Bugs,” 169
Byte-addressable memory,
295–
297
C
C programming language,
290
Caches,
468–
484.
See also Memory
miss rate versus cache parameters,
481–
482
multiway set associative,
474–
475
CAD. See Computer-aided design
Carry-lookahead adder,
235–
237
Carry propagate adder (CPA),
274
74xx series logic. See 74xx series logic
74xx series logic. See 74xx series logic
application-specific integrated (ASIC),
523
arithmetic. See Arithmetic
synchronous sequential,
114–
116
CISC. See Complex instruction set computers
CLBs. See Configurable logic blocks
Clock cycle. See Clock period
Clock rate. See Clock period
Clock cycles per instruction (CPI),
367–
368
CMOS. See Complementary Metal-Oxide-Semiconductor Logic
Combinational composition,
52–
53
Combinational logic design,
51–
100
HDLs and. See Hardware description languages
X’s (contention). See Contention
X’s (don’t cares). See Don’t cares
Z’s (floating). See Floating
Complementary Metal-Oxide-Semiconductor Logic (CMOS),
25
Complex instruction set computers (CISC),
292,
341
Computer-aided design (CAD),
167
Computer Organization and Design (Patterson and Hennessy),
290,
363
Complexity management, –
abstraction, –
discipline, –
hierarchy,
modularity,
regularity,
Conditional assignment,
175–
176
Conditional branches,
308
Conditional statements,
310–
311
Constants,
298.
See also Immediates
Contamination delay,
84–
88
multicycle MIPS processor FSM,
381–
395
pipelined MIPS processor,
405–
406
single-cycle MIPS processor,
374–
377
Configurable logic blocks (CLBs),
268–
272
Control hazards. See Branch/control hazards, Pipelining
CPA. See Carry propagate adder
CPI. See Clock cycles per instruction
Cycle time. See Clock Period
D
Data hazards. See Hazards
Datapath,
364.
See also MIPS microprocessors
multicycle MIPS processor,
382–
388
pipelined MIPS processor,
404
single-cycle MIPS processor,
368–
374
Data segments. See Memory map
Data types. See Hardware description languages
DC. See Direct current
Decimal numbers,
conversion to binary and hexadecimal. See Number conversion
Decimal to Binary conversion,
11
Decimal to hexadecimal conversion,
13
Decoders
DeMorgan’s theorem,
59,
60
Device under test (DUT),
214–
218.
See also Unit under test
Digital abstraction, –, –,
22–
26
DC transfer characteristics,
23–
24
Digital design
abstraction, –
discipline, –
hierarchy,
modularity,
regularity,
Digital system implementation,
515–
548
74xx series logic. See 74xx series logic
application-specific integrated circuits (ASICs),
523
packaging and assembly,
531–
534
printed circuit boards,
533–
534
transmission lines. See Transmission lines
DIP. See Dual-inline package
Direct current (DC),
23,
24
transfer characteristics,
23–
24,
25
Discipline, –
Disk. See Hard disk
divide unsigned (divu),
339
Double. See Double-precision floating-point numbers
Double-precision floating point numbers,
251–
252
DRAM. See Dynamic random access memory
Driver. See Device driver
Dual-inline package (DIP),
28,
531
DUT. See Device under test
Dynamic data segment,
331
Dynamic random access memory (DRAM),
257,
260,
463
E
Edge-triggered digital systems,
108,
112
Equations
Electrically erasable programmable read only memory (EEPROM),
263
EPC. See Exception Program Counter register
Erasable programmable read only memory (EPROM),
263
Exception program counter (EPC),
337–
338
Exclusive or. See XOR
F
FET. See Field effect transistors
Field effect transistors,
26
FIFO. See First-in-first-out queue. See also Queue
Finite state machines (FSMs),
117–
133
Mealy machines. See Mealy machines
Moore machines. See Moore machines
Moore versus Mealy machines,
126–
129
state transition diagram,
118–
119
First-in-first-out (FIFO) queue,
508
comparison with latches,
106,
112
Floating-point numbers,
250–
253
addition,
252–
255.
See also Addition
converting binary or decimal to. See Number conversions
division,
253.
See also Division
FDIV bug. See FDIV bug
floating-point unit (FPU),
253
special cases
FPGA. See Field programmable gate array
Frequency,
135.
See also Clock period
FSM. See Finite state machines
Full adder,
52,
178.
See also Adder, Addition
HDL using always/process,
197
using nonblocking assignments,
204
Fully associative cache,
475–
476
Functional specification,
51
Functions. See Procedure calls
G
transistor-level implementation,
262
Gedanken-Experiments on Sequential Machines (Moore),
111
Global pointer ($gp),
294,
331.
See also Static data segment
Gulliver’s Travels (Swift),
297
H
Hard drive. See Hard disk
Hardware reduction,
66–
67
Hardware description languages (HDLs),
167–
230
assignment statements,
177
blocking and nonblocking assignments,
201–
206
conditional assignment,
175–
176
synthesis tools. See Synthesis Tools
VHDL libraries and types,
183–
185
finite state machines,
206–
213
generic building blocks,
426
parameterized modules,
211–
213
registers,
190–
191.
See also Registers
simulation and synthesis,
169–
171
single-cycle processor,
422
data hazards 408–413
WAR. See Write after read
WAW. See Write after write
HDLs. See Hardware description languages
Hexadecimal numbers,
11–
13
to binary conversion table,
12
High-level programming languages,
290–
294
translating into assembly,
290–
291
compiling, linking, and launching,
330–
331
High impedance. See Floating, Z
High Z. See Floating, High impedance, Z
I
memory and input/output (I/O) systems,
499–
502
IEEE 754 floating-point standard,
251
ILP. See Instruction-level parallelism
Immediate addressing,
327
Information, amount of,
devices,
494–
496.
See also Peripheral devices
Instruction encoding. See Machine Language
Instruction register (IR),
383,
390
Instruction set architecture (ISA),
289–
361.
See also MIPS instruction set architecture
Input/output blocks (IOBs),
268
Institute of Electrical and Electronics Engineers,
250
Instruction encoding. See Instruction format
Instruction format
Instruction-level parallelism (ILP),
443,
446
Instruction set. See Instruction set architecture
Instructions. See also Language
loads. See Loads
multiplication and division,
308
Inverter. See NOT gate
manufacturing process,
515
Intel. See IA-32 microprocessors
Interrupts. See Exceptions
An Investigation of the Laws of Thought (Boole),
IOBs. See Input/output blocks
J
Java,
316.
See also Language
JTA. See Jump target address
Jump,
309–
310.
See also Branch, unconditional, Programming
Jump target address (JTA),
329
K
K-maps. See Karnaugh maps
Karnaugh, Maurice,
64,
71
Karnaugh maps (K-maps),
71–
79
logic minimization using,
73–
76
seven-segment display decoder,
75–
77
with “don’t cares,” 78
K-maps. See Karnaugh maps
L
Language. See also Instructions
translating assembly to machine,
300
Last-in-first-out (LIFO) queue,
321.
See also Stack, Queue
comparison with flip-flops,
106,
112
Least recently used (LRU) replacement,
478–
479
Least significant bit (lsb),
13
Least significant byte (LSB),
296
LIFO. See Last-in-first-out queue
upper immediate (lui),
308
Logic,
62–
65.
See also Multilevel combinational logic; Sequential logic design
bubble pushing. See Bubble pushing
combinational. See Combinational logic
gates. See Logic gates
hardware reduction. See Hardware reduction, Equation simplification
multilevel. See Multilevel combinational logic
sequential. See Sequential logic
using memory arrays,
264.
See also Logic arrays
field programmable gate array,
268–
272
programmable logic array,
266–
268
transistor-level implementations,
273–
274
multiple-input gates,
21–
22
types
AND. See AND gate
AOI (and-or-invert). See And-or-invert gate
NAND. See NAND gate
NOR. See NOR gate
NOT. See NOT gate
OAI (or-and-invert). See Or-and-invert gate
OR. See OR gate
XOR. See XOR gate
XNOR. See XNOR gate
Lookup tables (LUTs),
268
Low Voltage CMOS Logic (LVCMOS),
25
Low Voltage TTL Logic (LVTTL),
25
LRU. See Least recently used replacement
LSB. See Least significant byte
LUTs. See Lookup tables
LVCMOS. See Low Voltage CMOS Logic
LVTTL. See Low Voltage TTL Logic
M
translating from assembly language,
300–
302
translating into assembly language,
303
Mantissa,
250,
252–
253.
See also Floating-point numbers
MCM. See Multichip module
combined state transition and output table,
127
state transition diagram,
118–
119
Mean time between failures (MTBF),
146
average memory access time (AMAT),
467
cache. See Caches
DRAM. See Dynamic random access memory
dynamic data segment,
331
protection,
491.
See also Virtual memory
separate data and instruction,
430–
431
stack. See Stack
types
virtual,
466.
See also Virtual memory
word-addressable,
29.
See Word-addressable memory
DRAM. See Dynamic random access memory
logic implementation using,
264.
See also Logic arrays
register files built using,
261–
262
DRAM. See Dynamic random access memory
ROM. See Read only memory
SRAM. See Static random access memory
Memory-mapped I/O (input/output),
494–
498
communicating with I/O devices,
495–
496
speech synthesizer device driver,
498
speech synthesizer hardware,
496–
497
caches. See Caches
virtual memory. See Virtual memory
Metal-oxide-semiconductor field effect transistors (MOSFETs),
26–
31.
See also CMOS, nMOS, pMOS, transistors
MTBF. See Mean time between failures
probability of failure,
145
A Method of Synthesizing Sequential Circuits (Mealy),
111
advanced. See Advanced microarchitecture
architectural state. See Architectural State. See also Architecture
IA-32. See IA-32 microprocessor instruction set. See Instruction set
MIPS.
See MIPS microprocessor overview,
363–
366
types,
advanced. See Advanced microarchitecture
multicycle. See Multicycle MIPS processor
pipelined. See Pipelined MIPS processor
single-cycle. See Single-cycle MIPS processor
advanced. See Advanced microarchitecture
chips. See Chips
IA-32. See IA-32 microprocessor
I instructions. See MIPS instructions, IA-32 instructions
MIPS. See MIPS microprocessor
MIPS (Millions of instructions per second). See Millions of instructions per second
MIPS architecture. See MIPS instruction set architecture (ISA)
MIPS assembly language. See also MIPS instruction set architecture
assembler directives,
333
table of instructions,
336
translating machine language to,
303
translating to machine language,
300
MIPS instruction set architecture (ISA)
compiling, assembling, and loading,
330–
335
floating-point instructions,
340–
341
signed and unsigned instructions,
338–
339
translating and starting a program. See Translating and starting a program
formats
types,
branching. See Branching
multicycle. See Multicycle MIPS processor
pipelined. See Pipelined MIPS processor
single-cycle. See Single-cycle MIPS processor
MIPS processor. See MIPS microprocessor
MIPS single-cycle HDL implementation,
421–
431
AMAT. See Average memory access time
Modeling, structural. See Structural modeling
Modeling, behavioral. See Behavioral modeling
Modules, in HDL 167–168. See also Hardware description languages
state transition diagram,
127
state transition table,
128
MOSFETs. See Metal-oxide-semiconductor field effect transistors
Most significant bit (msb),
13
Most significant byte (MSB),
296
Move from coprocessor 0 (mfc0),
338
msb. See Most significant bit
MSB. See Most significant byte
MTBF. See Mean time before failure
Multichip module (MCM),
499
Multilevel combinational logic,
65–
69.
See also Logic
Multilevel page table,
493
parameterized,
211.
See also Hardware description languages
symbol and truth table,
79
with type conversion,
185
Multiplication,
246–
247.
See also Arithmetic, Multiplier
multiply unsigned (multu),
339
Multiprocessors,
447 chip,
448
Mux. See Multiplexers
N
NaN. See Not a number
Negation,
340.
See also Taking the two’s complement
NOT gate,
24,
172.
See also Inverter in HDL using always/process,
196
Nested procedure calls,
324–
326
No operation. See nop
Number conversion, –
19 See also Number systems, Binary numbers
binary to hexadecimal,
12
decimal to hexadecimal,
13
taking the two’s complement,
15,
240
addition. See Addition
binary numbers. See Binary numbers
conversion of. See Number conversions
decimal numbers. See Decimal numbers
estimating powers of two,
14
fixed-point,
249–
250.
See Fixed-point numbers
floating-point,
250–
253.
See Floating-point numbers
in hardware description languages,
179
hexadecimal numbers. See Hexadecimal numbers
negative and positive,
15–
19
rounding,
252.
See also Floatingpoint numbers
signed,
15–
19.
See also Signed binary numbers
sign/magnitude numbers. See Sign/magnitude numbers
two’s complement numbers. See Two’s complement numbers
unsigned,
O
OAI gate. See Or-and-invert gate
ON,
23.
See also 1, HIGH, Asserted
Operators
Or-and-invert (OAI) gate,
43
Out-of-order execution,
443
Out-of-order processor,
441–
443
P
ipelining. See Pipelining, Pipelined MIPS processor
SIMD. See Single instruction multiple data unit
spatial and temporal,
151
vector processor. See Vector processor
PCBs. See Printed circuit boards
PC-relative addressing,
327–
328.
See also Addressing modes
Pentium processors,
449–
452.
See also Intel, IA-32
Peripheral devices. See I/O devices
Perl programming language,
20
Physical page number,
486
Pipelined MIPS processor,
151,
366,
401–
421.
See also MIPS, Architecture, Microarchitecture
hazards. See Hazards
processor performance comparison,
420
stalls,
410–
413.
See also Hazards
Pipelining hazards.
See Hazards
PLAs. See Programmable logic arrays
Plastic leaded chip carriers (PLCCs),
531–
532
PLCCs. See Plastic leaded chip carriers
PLDs. See Programmable logic devices
POS. See Product of sums form
Prediction. See Branch prediction
Printed circuit boards (PCBs),
533–
534
arguments and variables,
326–
327
preserved versus nonpreserved registers,
323–
324
Processors. See Microprocessors
Product-of-sums (POS) canonical form,
56
Program counter (PC),
365
Programmable logic devices (PLDs),
268
Programmable read only memories (PROMs),
516–
520.
See also Read only memories
arithmetic/logical instructions.
See Arithmetic,
304–
308
arrays. See Arrays
branching. See Branching
conditional statements. See Conditional statements
loops. See Loops
procedure calls. See Procedure calls
translating and starting a program,
331–
335
Programming languages,
290–
294
Protection, memory. See Memory protection
Proving Boolean theorems. See Perfect induction
PROMs. See Programmable read only memories
Pseudo-direct addressing,
328–
329.
See also Addressing modes
Pseudo-nMOS logic,
33–
34.
See also Transistors
Push,
67–
69.
See also Stack
Q
FIFO. See First-in-first-out queue
LIFO. See Last-in-first-out queue
Q output. See Sequential logic design
R
RAM. See Random access memory
Random access memory (RAM),
257,
262–
264.
See also Memory arrays
EPROM. See Erasable programmable read only memory
EEPROM. See Electrically erasable programmable read only memory
flash memory. See Flash memory
PROM. See Programmable read only memory
transistor-level implementation,
273
Recursive procedure calls,
324–
325.
See also Procedure calls
Reduced instruction set computer (RISC),
292,
364
Reduction operators,
174.
See also Hardware description languages, Verilog
Register-only addressing,
327.
See also Addressing modes
Register renaming,
443–
445.
See also Advanced microarchitecture
arguments ($a0-$a3)
assembler temporary ($at)
enabled. See Enabled registers
global pointer ($gp),
331
program counter (PC),
365
preserved and nonpreserved,
322–
324
resettable. See Resettable registers
Register set,
294.
See also Register file, MIPS registers, IA-32 registers
Replacement policies,
492.
See also Caches, Virtual memory
asynchronous. See Asynchronous resettable registers
synchronous. See Synchronous resettable registers
RISC. See Reduced instruction set computer
ROM, See Read Only Memory
S
Scan chains,
255.
See also Shift registers
Semiconductor industry, sales,
Semiconductors,
27.
See also Transistors
CMOS. See Complementary metal oxide silicon
diodes. See Diodes
transistors. See Transistors
MOSFET. See Metal oxide silicon field effect transistors
nMOS. See nMOS transistors
pMOS. See pMOS transistors
pseudo nMOS. See Pseudo nMOS
Sequential building blocks.
See Sequential logic
timing of,
133–
149.
See also Timing
set if less than (slt),
313
set if less than immediate (slti),
339
set if less than immediate unsigned (sltiu),
339
set if less than unsigned (sltu),
339
Seven-segment display decoder,
75–
77 with “don’t cares,” 78
Shift amount (shamt),
245
shift left logical (sll),
306
shift left logical variable (sllv),
306
shift right arithmetic (sra),
306
shift right arithmetic variable (srav),
306
shift right logical (srl),
306
shift right logical variable (srlv),
306
Sign/magnitude numbers,
15–
16
Significand. See Mantissa
Silicon dioxide (SO
2),
28
SIMD. See Single instruction multiple data units
Single-cycle MIPS processor,
366,
368–
381.
See also MIPS microprocessor, MIPS architecture, MIPS microarchitecture
ALU decoder truth table. See ALU decoder
Main decoder truth table. See Main decoder
Single instruction multiple data (SIMD) units,
438,
445
SRAM. See Static random access memory
Stack,
321–
322.
See also Memory map, Procedure calls, Queue
dynamic data segment,
331
LIFO. See Last-in-first-out queue
Stalls,
410–
413.
See also Hazards
Static random access memory (SRAM),
257,
260
Stored program concept,
303–
304
Stores
subtract unsigned (subu),
339
Sum-of-products (SOP) canonical form,
54–
55
Superscalar processor,
438–
440
Switch/case statements,
311
MTBF. See Mean time before failure
probability of failure. See Probability of failure
Synchronous resettable registers,
192
Synchronous sequential logic,
113–
117
Synthesis,
78–
79,
186,
187,
188,
189,
190,
193,
194,
195,
199,
200
T
Taking the two’s complement,
16
with test vector file,
216
Theorems. See Boolean Theorems
Thin small outline package (TSOP),
531
Timing
hold time. See Hold time
hold time constraint,
136–
137.
See Hold time constraint, Hold time violation
hold time violation.
See Hold time violation, Hold time constraint,
139
setup time. See Setup time
setup time constraint,
135–
136
setup time violations
resolution time,
146–
149.
See also Metastability
TLB. See Translation lookaside buffer
CMOS. See Complement metal oxide silicon
nMOS. See nMOS
pMOS. See pMOS
Transistor-Transistor Logic (TTL),
25
Translation lookaside buffer (TLB),
490
Translating and starting a program,
331–
336
Transmission gates,
33.
See also Transistors
reflection coefficient,
544–
545
mismatched termination,
539–
541
“don’t care,” 77
seven-segment display decoder,
76
with undefined and floating inputs,
181
TSOP. See Thin small outline package
TTL. See Transistor-Transistor Logic
Two’s complement numbers,
16–
18.
See also Binary numbers
U
Unconditional branches,
308.
See also Jumps
Unicode,
316.
See also ASCII
Unit under test (UUT),
201
UUT. See Unit under test
V
Valid bit,
472.
See also Caches, Virtual memory
Vanity Fair (Carroll),
65
Vector processors,
438.
See also Advanced microarchitecture
Verilog,
167,
169,
172,
173,
174,
175,
176,
178,
180,
181,
201,
203,
205
accessing parts of busses,
189
bad synchronizer with blocking assignments,
206
continuous assignment statement,
173
divide-by-3 finite state machine,
207,
208
using always/process,
197
using nonblocking assignments,
204
IEEE_STD_LOGIC_SIGNED,
183
IEEE_STD_LOGIC_UNSIGNED,
183
using always/process,
196
MIPS top-level module,
430
nonblocking assignment,
191,
202
parameterized
pattern recognizer
resettable flip-flop,
427
resettable enabled register,
193
self-checking testbench,
215
seven-segment display decoder,
198
single-cycle MIPS processor,
422
structural models
with test vector file,
216
truth tables with undefined and floating inputs,
181
VHDL libraries and types,
167,
169,
172,
173,
174,
175,
176,
178,
180,
181,
183–
185,
203,
205
accessing parts of busses,
189
bad synchronizer with blocking assignments,
206
concurrent signal assignment,
173,
178
CONV_STD_LOGIC_VECTOR,
212
divide-by-3 finite state machine,
207,
208
using always/process,
197
using nonblocking assignments,
204
using always/process,
196
MIPS top-level module,
430
parameterized N-bit multiplexer,
211
pattern recognizer
resettable enabled register,
193
resettable flip-flop,
427
selected signal assignment statements,
176
self-checking testbench,
215
seven-segment display decoder,
198
simulation waveforms with delays,
170,
183
single-cycle MIPS processor,
422
structural models
with test vector file,
216
truth tables with undefined and floating inputs,
181
multilevel page tables,
492–
494
replacement policies,
492
translation lookaside buffer (TLB),
490.
See Translation lookaside buffer
Volatile memory,
259.
See also DRAM, SRAM, Flip-flops
W
WAR. See Write after read
WAW. See Write after write
Whitmore, Georgiana,
Word-addressable memory,
295
Write after read (WAR) hazard,
442.
See also Hazards
Write after write (WAW) hazard,
442–
443.
See also Hazards
X
X. See Contention, Don’t care.,