Exam Practice
Cheat sheet, flashcards and quiz covering Lectures 1–7: computer evolution & the von Neumann model, number representation & arithmetic, floating point, character & recording codes, CRC & Hamming codes, Boolean algebra, K-maps, combinational & sequential circuits, and the MARIE processor, assembly language & control unit.
Reference text: The Essentials of Computer Organization and Architecture, Linda Null & Julia Lobur
Computer organization
The physical aspects of a computer system: circuit design, control signals, memory types, buses, clock rate. Answers how each component works and how components are connected.
Computer architecture
The logical aspects of the system as seen by the programmer: instruction set, instruction formats, data types, addressing modes, registers. Answers what the machine can do.
Test for architecture vs. organization
Would a programmer need to know it to write a correct program? Yes → architecture. If only speed, cost or physical build changes → organization.
Multiply instruction vs. multiplier circuit
Whether a multiply instruction exists is architecture; whether it uses a dedicated circuit or shift-and-add is organization.
Three basic components of a computer
A processor to interpret and execute programs, a memory to store data and programs, and a mechanism (I/O system and buses) for transferring data.
Bus, port, cache
Bus: shared wires carrying data, addresses and control. Port: connector for an external device (USB, HDMI). Cache: small fast memory holding copies of frequently used data.
Which quantities use powers of 2 vs. powers of 10?
Memory size (RAM, cache) uses powers of 2 (1 KB = B). Clock speed, data rates and advertised disk capacity use powers of 10 (1 GHz = Hz, 1 TB = B).
Clock period of a 2 GHz CPU
s = 0.5 ns.
Why a 1 TB drive shows about 931 GB
Maker uses bytes; the OS divides by : GiB. No bytes are missing.
4 GB of RAM in bytes
bytes.
What defines a computer generation?
Its dominant (switching) hardware technology, plus the machines, memory, software and uses it made possible.
Generation 0
Mechanical calculators (1642–1945): Schickard's Calculating Clock, Pascal's Pascaline, Babbage's Difference and Analytical Engines, Hollerith's punched-card tabulator.
ENIAC
1st generation (1946), Mauchly and Eckert: first all-electronic general-purpose computer, about 17,468 vacuum tubes, programmed by moving plugs and wires.
2nd generation highlights
Transistors (Bell Labs 1947, germanium), ~10× faster with 1/10 power and space, magnetic core RAM, FORTRAN/COBOL/ALGOL/SNOBOL, IBM 7094, CDC 6600.
3rd generation highlights
Integrated circuits on silicon, ~1 MIPS, online systems (airline reservations), IBM and the BUNCH, IBM System/360 family, PDP-8/PDP-11, Cray-1, UNIX rewritten in C.
VLSI and the first microprocessor
VLSI = more than 10,000 components per chip (4th generation). First microprocessor: 4-bit Intel 4004 (1971, about 2,300 transistors).
Components of the 5th generation
ULSI multicore CPUs and SoCs, GPUs and AI accelerators (NPU, TPU), multi-level caches, DDR5 and HBM, NVMe SSDs, PCIe/Thunderbolt, 5G/IoT, cloud computing, AI/ML software.
Likely components of the 6th generation
Quantum processors, neuromorphic chips, in-memory computing, optical computing, beyond-silicon materials and 3-D chips, DNA storage, brain-computer interfaces, 6G. Moves beyond silicon and the von Neumann model.
Moore's law (original and contemporary)
Original (1965): IC transistor density doubles every year. Contemporary: silicon chip density doubles every 18 months. .
Rock's law and its relation to Moore's law
Cost of semiconductor fab equipment doubles every 4 years. For Moore's law to hold, Rock's law must fail, or vice versa.
How was the ENIAC programmed?
At the digital logic level, by moving plugs and wires and setting switches; each unique problem type needed a different hardware configuration.
Stored-program concept
Program instructions are stored in the same memory as data, as binary numbers, so a new program is loaded instead of rewiring. Conceived by Mauchly and Eckert, ascribed to von Neumann.
Three characteristics of a von Neumann machine
Three hardware systems (CPU, main memory holding programs and data, I/O); sequential instruction processing; a single data path between CPU and main memory.
Von Neumann bottleneck
The single path between CPU and memory that every instruction and operand must cross one at a time, so the CPU waits on memory. Softened by caches, wider buses, split I/D caches.
Fetch step (register level)
MAR ← PC, IR ← M[MAR], PC ← PC + 1. The PC is incremented during fetch, so it already points to the next instruction while the current one executes.
Roles of PC, IR, MAR, MBR, AC
PC: address of next instruction. IR: current instruction. MAR: address sent to memory. MBR: data read from or written to memory. AC: working value/ALU results.
Decode 3105
Opcode 3 = Add, address 105: AC ← AC + M[105].
3105tap to flip back ↺Harvard architecture
Separate memories and paths for instructions and data, so an instruction fetch and a data access can happen at the same time (microcontrollers, DSPs).
Dataflow computing
Non-von Neumann model with no program counter: an instruction executes as soon as its input data are available.
Non-von Neumann models (list)
Harvard, special-purpose processors (GPU), dataflow, quantum, cellular automata, parallel computing, machine intelligence (neural networks, neuromorphic chips).
Nibble vs byte vs word
Nibble = 4 bits (one hex digit); byte = 8 bits, the smallest addressable unit in most machines; word = machine-dependent group of bytes (commonly 16, 32 or 64 bits).
Division-remainder method
Repeatedly divide by the target base, recording remainders; read them bottom to top (the first remainder is the least significant digit). .
Converting a decimal fraction to binary
Repeatedly multiply the fraction by 2; each integer part is the next bit; read top to bottom. .
When does a decimal fraction terminate in binary?
Only when, in lowest terms, its denominator is a power of 2. terminates; gives .
Binary → hex/octal grouping rule
Group 4 (hex) or 3 (octal) bits starting at the radix point, moving outward both ways, padding outer groups with 0s. , not .
Number of base- digits needed for
. needs bits.
Unsigned range of bits
to . 12 bits: 0 to 4095.
Byte- vs word-addressable address bits
Byte-addressable: . Word-addressable: . bytes with 4-byte words: 24 vs 22 bits.
Signed magnitude
MSB is the sign (1 = negative), remaining bits hold the magnitude. . Range , two zeros.
One's complement of
, i.e. flip every bit. (8 bits). Two zeros: and .
Two's complement of
= one's complement + 1. . Range to , one zero.
Copy-then-flip shortcut
Scan from the right, copy bits through the first 1, flip all bits to its left. ().
Value of a two's complement pattern
MSB has weight . .
8-bit ranges
Signed magnitude and one's complement: −127 to +127. Two's complement: −128 to +127. Unsigned: 0 to 255.
Sign extension rules
Two's/one's complement: copy the sign bit into new high bits. Signed magnitude: move sign to new MSB, fill 0s between sign and magnitude. : SM , two's .
Which signed representation is best and why?
Two's complement: single zero, widest range, and subtraction uses the same adder with the carry simply discarded.
Signed-magnitude addition rule
Same signs: add magnitudes, keep the sign. Different signs: subtract smaller magnitude from larger and take the sign of the larger. Overflow = carry out of the magnitude.
End-around carry
In one's complement addition, a carry out of the MSB is added back into the LSB, because dropping it would leave .
Two's complement subtraction
; add including sign bits and discard any carry out of the MSB.
Overflow rule (two's complement)
Overflow iff carry into MSB ≠ carry out of MSB: . Equivalently, two same-sign operands give an opposite-sign result.
Is a carry out of the MSB always overflow?
No. () has a carry out but no overflow since carry in = carry out.
Role of in the XOR adder/subtractor
feeds every XOR and the carry-in . adds ; adds , i.e. subtracts.
Sequential multiplier cycle
If , ; then shift C, A, Q right one bit and decrement Count. After cycles the -bit product is in A,Q.
Why the C bit in the multiplier?
It catches the carry out of ; the right shift moves it into so it is not lost (e.g. in ).
Three parts of a floating-point number
Sign, exponent (sets the range) and significand/mantissa (sets the precision).
Lecture 14-bit model layout
1 sign bit, 5-bit exponent (excess-16), 8-bit fraction with an implicit leading 1.
Implicit (hidden) leading 1
Every normalized nonzero binary number starts with 1., so that bit is not stored, gaining one bit of precision.
Excess-16 exponent
Stored = true + 16, giving true exponents −16 to +15. .
Why use a biased exponent?
An unsigned exponent cannot be negative; the bias allows negative exponents while keeping the field unsigned, so magnitudes compare and sort like plain binary.
IEEE 754 single vs double
Single: 1 + 8 + 23 bits, bias 127. Double: 1 + 11 + 52 bits, bias 1023.
IEEE special values
E = 0, F = 0: ±0. E all 1s, F = 0: ±∞. E all 1s, F ≠ 0: NaN.
in the 14-bit model
→ .
in IEEE single
, , → .
FP addition steps
Check zeros; align by shifting the smaller-exponent significand right; add/subtract; normalize; round/truncate and check over/underflow.
Why shift the smaller number during alignment?
Shifting it right only loses its least significant bits; shifting the larger left would lose its most significant bits.
FP multiplication
Sign = XOR of signs; add exponents (biased: ); multiply significands; normalize (at most one right shift).
FP division
Sign = XOR; subtract exponents (biased: ); divide significands; normalize. : .
Overflow vs underflow (FP)
Overflow: exponent too large to store. Underflow: nonzero result whose exponent is too small, i.e. too close to zero.
Spacing of 14-bit values near
(8 fraction bits). Near 128 the gap is 0.5, so is stored as .
Blatant vs subtle errors
Blatant: obvious (crash, overflow/underflow). Subtle: plausible but wrong, e.g. truncation . A crash is better than a plausible wrong answer.
How to compare floating-point values
Never with == (especially == 0.0); use a tolerance: abs(x - y) < epsilon.
BCD encoding of a decimal number
Each decimal digit is encoded separately in 4 bits (0000–1001). = 0011 0000 0101; 1010–1111 are unused.
BCD sign/zone nibbles
1111 = unsigned, 1100 = positive, 1101 = negative.
Zoned decimal vs packed BCD
Zoned: one digit per byte, zone 1111 except the last digit whose zone is the sign ( = F3 F0 C5). Packed: two digits per byte plus a sign nibble at the end, padded with 0000 if needed ( = 30 5C).
EBCDIC
IBM's 8-bit Extended Binary-Coded Decimal Interchange Code (1964): zone nibble picks the row, digit nibble the column. "A" = C1, "7" = F7, space = 40.
ASCII size and anchors
7 bits, 128 codes (00–7F). "0" = 30 hex, "A" = 41 hex, "a" = 61 hex; upper and lower case differ by 20 hex.
How to add an even parity bit
Count the 1s in the 7-bit code; parity bit (leftmost) = 1 if the count is odd, else 0. "C" = 100 0011 → 1100 0011.
Limitation of a single parity bit
Detects any odd number of bit errors but misses an even number, and cannot say which bit is wrong.
Unicode code space
21-bit, U+0000 to U+10FFFF: 17 planes × 65,536 = 1,114,112 code points. Plane 0 is the BMP; U+0000–U+007F equal ASCII.
Finding a code point's Unicode plane
Divide by (): the hex digits in front of the last four. U+1F600 → plane 1; U+20AC → plane 0 (BMP).
Bit cell
For transmission, the time one bit lasts (; 2 Kbps → 0.5 ms). For storage, the surface area holding one bit.
Flux reversal
A change of magnetic polarity between adjacent areas of the surface; the read head detects the change, not the polarity.
NRZ
1 = high for the whole cell, 0 = low. Most compact, but long runs of identical bits give a flat line and loss of synchronisation.
NRZI
A 1 causes a transition, a 0 none; the level itself is meaningless. Fixes runs of 1s, still loses sync on long runs of 0s. Transitions = number of 1s.
Manchester code
Mid-cell transition in every cell: 1 = low→high, 0 = high→low, plus a boundary flip between equal neighbours. Self-clocking; classic Ethernet. Up to 2 transitions per bit.
FM
Clock transition at every cell boundary plus a mid-cell data transition for each 1. Transitions = + number of 1s ("OK": 16 + 10 = 26).
MFM
Mid-cell transition for each 1; boundary transition only between two adjacent 0 cells. "OK": 10 + 2 = 12 transitions.
RLL(2,7)
Data is re-coded (2 code bits per data bit) so there are at least 2 and at most 7 zeros between code 1s, then recorded with NRZI. "OK" needs only 8 transitions.
Rank FM, MFM, RLL by density
RLL MFM FM: RLL needs the fewest flux reversals per data bit, so the smallest bit cells. RLL saves 25% vs MFM on "OK".
Check digit
An extra digit computed from the others (e.g. last digit of UPC barcodes and ISBNs) so a single wrong digit is caught.
UPC-A check digit rule
3 × (sum of odd positions) + (sum of even positions) = ; check digit = , or 0. 01234567890 → → 5.
Syndrome (for CRC)
The group of error-control bits appended to the end of a data block.
Modulo-2 addition and subtraction
Both are bitwise XOR with no carries or borrows: .
Key length vs CRC length
A key of bits (degree ) gives an -bit CRC, so the sender appends zeros. CRC-16-CCITT (17 bits) → 16-bit CRC.
CRC sender steps
Append zeros, mod-2 divide by the key, replace the zeros with the -bit remainder. 1111101 / 1101 → 1111101111.
CRC receiver test
Divide the received codeword by the key: remainder 0 → accept; otherwise reject and request retransmission.
Errors a degree- CRC always catches
All single-bit errors, all bursts of length , and all odd-count errors when is a factor of the key.
When does a CRC miss an error?
Only when the error pattern is a multiple of the key, e.g. key 1101 shifted: 0001101000.
Hamming distance
Number of bit positions in which two code words differ: XOR them and count the 1s. → 3.
D(min) needed to detect / correct k errors
Detect: . Correct: .
Check-bit inequality
Smallest with . → (), .
Where do check bits go?
Number positions 1..n from the right; check bits at powers of 2 (1, 2, 4, 8 …); data fills the rest from the highest position down.
Which positions does P4 check (n = 12)?
Those whose binary number contains 4: positions 4, 5, 6, 7, 12.
Computing a check bit (even parity)
XOR of the data bits in the positions it covers. Data 1011 (m = 4) → P1 = 1, P2 = 0, P4 = 0 → 1010101.
Syndrome interpretation
: 0 = no error; a power of 2 = error in that check bit (data fine); any other value = position of the wrong data bit.
Why Hamming instead of CRC for memory?
Memory has no sender to retransmit, so the code must correct errors, not just detect them.
Reed-Solomon codes
Error-correcting codes good at burst errors (runs of adjacent damaged bits); used on CD-ROMs.
Truth table rows for inputs
rows, listed in binary counting order (3 inputs → 8 rows, 5 inputs → 32).
Number of different Boolean functions of variables
: each of the output bits is free. → 16 functions.
XOR in AND/OR/NOT form
; 1 when inputs differ. Multi-input XOR is 1 for an odd number of 1s (parity).
When is NAND 0? When is NOR 1?
NAND is 0 only when all inputs are 1; NOR is 1 only when all inputs are 0.
Why are NAND and NOR called universal?
Any Boolean function can be built using only NAND (or only NOR); they are cheap to mass-produce and faster / lower-power than other gate configurations.
OR from NAND gates only
Invert each input with a NAND whose inputs are tied: , ; then NAND() (3 gates).
AND from NOR gates only
NOR() , NOR() , then NOR() (3 gates).
CMOS NOR gate structure
Two pMOS in series from +5 V to , two nMOS in parallel from to ground: 4 transistors. pMOS conducts on 0, nMOS on 1.
7400 chip
SSI quad 2-input NAND: 14 pins = power + ground + 4 gates × 3 pins. 10 NAND gates need chips.
DeMorgan's law
and : complement of a product is the sum of complements, and vice versa.
Distributive law (OR over AND)
; no ordinary-algebra counterpart, but often the key simplification step.
Absorption law
and .
Recipe for
Complement each variable, swap AND ↔ OR, keep old products grouped: .
Simplify
(Distributive, Inverse, Identity).
Consensus theorem
: the term is redundant.
Minterm vs maxterm
Minterm: product of all variables, 1 in exactly one row (used in SOP). Maxterm: sum of all variables, 0 in exactly one row (used in POS).
Canonical SOP of a truth table
OR the minterms of the rows where ; e.g. .
Operator precedence
NOT first, then AND, then OR (parentheses override). complements only ; complements the product.
Column order on a 3-variable K-map
= 00, 01, 11, 10 (Gray code), giving cell order m0 m1 m3 m2 / m4 m5 m7 m6.
Why Gray-code ordering?
Adjacent cells (including wrap-around) differ in exactly one variable, so each pair of neighbouring 1s merges: .
Allowed group sizes and shapes
Power-of-2 rectangles of 1s (1, 2, 4, 8, 16); no diagonals; as large as possible; overlap and wrap-around allowed.
Literals in a group of 4 on a 4-variable map
2 literals (a group of cells eliminates variables: ).
The four corners of a 4-variable map
m0, m2, m8, m10 form one group (wrap both ways): .
Don't-care condition
An input that never occurs (e.g. BCD codes 1010–1111). Marked d; used as 1 only if it enlarges a group; never has to be covered.
Simplify for
Using d5, d7: columns 01 and 11 form a group of 4 with constant, so .
How to read a group's term
Keep only variables constant over the group: constant 1 → uncomplemented, constant 0 → complemented; changing variables drop out.
Half adder equations
Sum , Carry : one XOR and one AND.
Full adder equations
Sum , ; built from two half adders and an OR gate.
Ripple-carry adder drawback
Slow for wide words: bit waits for the carry to pass through all previous full adders.
Decoder
inputs → outputs, exactly one active; each output is a minterm. Used for memory address decoding (64 outputs → 6 inputs).
Multiplexer select lines
: 8 inputs → 3, 32 inputs → 5. The select value chooses which input reaches the single output.
Any function from a decoder
Feed the variables to an -to- decoder and OR the outputs of the function's minterms.
Lecture 2-bit ALU function codes
: 00 ADD, 01 OR, 10 NOT , 11 AND; a 2-to-4 decoder enables one result.
Combinational circuit
Outputs depend only on current inputs (no memory, no feedback): adders, decoders, multiplexers, ALU.
Sequential circuit
Output depends on current inputs and current state; memory is created by feedback; state changes on clock ticks.
Edge- vs level-triggered
Edge-triggered: changes state at the rising or falling edge. Level-triggered: changes whenever the clock is high.
SR flip-flop characteristic table
00 hold, 01 reset to 0, 10 set to 1, 11 undefined (both NOR outputs forced to 0).
JK flip-flop characteristic table
00 hold, 01 reset, 10 set, 11 toggle. ; internally , .
D flip-flop
; built from SR with , . Fundamental 1-bit memory cell; registers are D flip-flops on a shared clock.
T flip-flop
JK with : (0 hold, 1 toggle). Basis of binary counters.
When does bit of the JK binary counter toggle?
When Count Enable = 1 and all lower bits are 1 ( CE); toggles every pulse.
JK inputs needed for transition 1 → 0
(don't care), : reset (01) or toggle (11) both give 0.
Clock period of 800 MHz
ns.
Datapath vs control unit
The datapath (ALU, registers, buses) does the work; the control unit decides which datapath actions happen and when, based on the instruction, PC and status flags.
Clock cycle time formula
; in ns, . 800 MHz → 1.25 ns; 2.5 GHz → 0.4 ns.
Three groups of bus lines
Data lines (the value), address lines (where), control lines (what and when: read/write, clock, arbitration, interrupts).
Multipoint bus drawback and fix
Only one device may drive the shared wires at a time; hardware protocols (bus arbitration) grant access. It is cheap but can become a bottleneck.
Address lines for 4M × 16 (word- vs byte-addressable)
Word: → 22 lines. Byte: → 23 lines. Width (16) affects data lines only.
Chips for L × W memory from l × w chips
. MARIE 4K × 16 from 1K × 8: 4 rows × 2 = 8 chips.
Chip-select bits
high-order address bits into a decoder; the remaining bits go to every chip. MARIE: 2 bits (2-to-4 decoder) + 10 bits.
High- vs low-order interleaving
High-order: chip select from leftmost bits, consecutive addresses fill one row. Low-order: from rightmost bits, consecutive addresses spread across rows so they can work in parallel.
Why registers use D flip-flops
A D flip-flop stores its input at the clock edge (), exactly "load this word"; an n-bit register needs n of them.
MARIE key characteristics
Two's complement, stored program, 16-bit fixed words, 4K words word-addressable memory, 16-bit instruction = 4-bit opcode + 12-bit address, 7 registers.
Why MAR/PC are 12 bits but AC/MBR/IR are 16
MAR and PC hold addresses: words. AC, MBR, IR hold data words/instructions, which are 16 bits.
Bus device numbers
Memory 0, MAR 1, PC 2, MBR 3, AC 4, InREG 5, OutREG 6, IR 7.
Skipcond codes
Skipcond 000 (8000): skip if AC < 0; 400 (8400): AC = 0; 800 (8800): AC > 0. Condition is in IR bits 11–10.
LoadI X vs Load X
Load: AC ← M[X]. LoadI: AC ← M[M[X]], X holds a pointer; one extra memory read.
What does JnS X do?
Stores the return address (current PC) in M[X], then PC ← X + 1. AC is overwritten with X + 1. Return with JumpI X.
Encode AddI 20F
Opcode B + address 20F → B20F = 1011 0010 0000 1111.
AddI 20Ftap to flip back ↺Purpose of the AC/MBR/ALU dedicated path
Lets AC ← AC ± MBR return the ALU result to the AC without using the common bus (signal ).
How many opcodes can MARIE encode?
4 bits → 16; MARIE uses 15 (0–E), leaving F free.
RTL of fetch
MAR ← PC; IR ← M[MAR]; PC ← PC + 1.
RTL of decode
MAR ← IR[11–0]; the control unit decodes IR[15–12].
When is "get operand" (MBR ← M[MAR]) used?
Only when the instruction reads a value from memory: Load, Add, Subt, the indirect instructions. Not for Store, Halt, Jump, Clear, Input, Output, Skipcond.
What is in the PC while an instruction executes?
The address of the next instruction, because the PC was incremented during fetch.
Registers changed by fetch
MAR, IR and PC. MBR and AC are untouched.
Trace table convention
One row per microoperation, values after the step; only the destination register changes (fetch also increments PC); unchanged values are copied down.
Memory reads for the addition program (Load, Add, Store, Halt)
4 fetches + 2 operand reads = 6 reads, plus 1 write (Store).
Interrupt handling in the cycle
After execute, check for an interrupt; if pending, save PC/state, run the interrupt service routine, restore, continue. MARIE's basic cycle omits this.
Assembler pass 1
Walk the source with a location counter from ORG; record each label → address in the symbol table; LC + 1 per instruction or DEC/HEX word.
Assembler pass 2
Substitute label addresses into operands, convert DEC/HEX constants to 16-bit hex, emit machine words.
Why a two-pass assembler?
Forward references: a label may be used before the line that defines it.
Directives ORG, DEC, HEX, END
ORG n: start at hex address n. DEC n / HEX n: one data word in decimal / hex. END: end of source. They are assembler instructions, not CPU instructions.
Assemble DEC -23
23 = 0017 → invert FFE8 → +1 → FFE9.
DEC -23tap to flip back ↺If (X > Y) pattern
Load X / Subt Y / Skipcond 800 / Jump Else then the THEN part; the Jump is skipped when X − Y > 0.
Subroutine skeleton
JnS Sub ... Sub, HEX 0000 (return address), body, JumpI Sub. Parameters go through agreed memory locations (no stack).
Why place data after Halt?
The CPU cannot tell data from instructions; running into DEC 35 would execute 0023 as JnS 023.
vs
= number of the register read onto the bus (source); = number of the register written from the bus (destination).
ALU codes
00 nothing, 01 add, 10 subtract, 11 clear. With the AC loads the ALU result.
Signals for Add X
: ; : ; : .
Signals for Load X step AC ← MBR
: MBR (011) onto the bus, AC (100) loads; no ALU, no .
Role of
Counter reset: returns the timing ring counter to ; placed on the last step of each instruction.
Hardwired control unit parts
Instruction decoder (AND of opcode bits), ring counter for , and OR-of-AND logic: each signal = Σ(instruction · ).
Microprogrammed control
Each instruction runs a microroutine from a control store; one microinstruction is fetched per clock into a buffer, decoded into control signals. A computer in miniature.
MARIE microinstruction format
18 bits: MicroOp1 (5) | MicroOp2 (5) | Jump (1) | Dest (7). Routine ends with Jump = 1, Dest = 0000000 (back to fetch).
Microcode for MARIE fetch (lines 0–3)
01010 MAR ← PC; 00110 IR ← M[MAR]; 10001 PC ← PC + 1; 01000 MAR ← IR[11–0]; MicroOp2 NOP, Jump 0.
Hardwired vs microprogrammed trade-off
Hardwired is faster (RISC). Microprogrammed is slower but easy to change and good for complex instructions (CISC).