Hardware Design Hierarchy
System
- datapath
- code registers
- multiplexer
- comparator
- control
- state registers
- combinational logic
logic은 다음으로 구성된다.
- multiplexer
- comparator
- combinational logic
register는 다음으로 구성된다
- code registers
- state resgisters
logic과 register가 합쳐져 switching networks(0과 1로 구성된 네트워크)를 구성한다.
Switches(1/2)
위에 보이는 그림이 Open switch 이고 A = 0(unasserted)
아래 보이는 그림은 close switch 이고 A = 1(aseserted)
이러한 example 에서 Z ≡ A로 표현,(A에 따라서 Z에 불이 들어올 수 있다.)
Switches(2/2)
1 = close 이다.
직렬
병렬
Block Diagrams
NAND로부터 AND,OR,NOT같은 연산을 만들 수 있다.
Digital System은 두개의 기본타입 회로로 이루어진다.
- Combinational Logic
- Output은 current inputs만 영향을 미친다.
- GATE들(AND,OR,NOT)을 엮은것. E.g)ALU
- Sequential Logic
- Output은 current inputs+ current states(stored values)에 의해 영향을 받는다.
- E.g) memory and registers
ALU(Arithmetic Logic Unit)
- ALU는 Combinational Logic이다. binary number로 arithmetic과 bitwise operation을 수행한다.
- ALU는 많은 컴퓨팅 회로의 기본적으로 많이 들어간다. e.g) CPU, FPU, GPU
Combinational Logic
- Text Description
- Circuit Diagram
- Trangister and wires
- Logic gates
- Truth Table
- Boolean Expression
- All are equivalent
- 내부 기억 element가 없기 때문에 같은 값이면 출력 값이 같다.
- 출력이 현재 입력값에만 의존
Truth tables
- output은 오직 현재 input에 의존
- 0과 1 사용
- 한개의 input은 0,1이 가능하다. input이 N개 일때, 가능한 output의 수는 2N
Logic Gates(1/2)
- NAND: AND NOT과 같다. 둘다 1이면 0
- NOR: OR NOT과 같다. 둘중에 하나만 1이면 0 이다.
- XOR: exclusive OR과 같다. 두 값이 같으면 0, 아니면 1이다.
Boolean Algebric Simplification Example
y = ab + a + c = a(b +1)+c = a+c
Circuit Simplification Example(1/3)
D = (AB)'(A + B'C)
Circuit Simplification Example(2/3)
D = (AB)'(A +B'C) = (A' + B')(A + B'C) = A'A+A'B'C+B'A+B'B'C
= 0+A'B'C'+B'A+B'C =B'C(A'+1)+B'A =B'C+B'A =B'(C+A)
After Simplification
gate가 6개에서 3개로 줄었다.
Sequential Logic
- 상태를 포함하는 논리회로
- output은 current input과 past input 모두 영향받음
- Combinational Logic 에서 나온 output을 register에 저장했다가 현재 상태 반영해서 새로운 Logic 만든다.(state element에 값 전달)
- clock에서 현재상태를 전달
state element
- 적어도 2개의 입력과 1개의 출력을 갖는다.(꼭 있어야 하는 입력은 기록할 데이터와 클럭)
- 클럭 입력은 데이터 값이 state element에 기록되는 시점을 결정한다.
- state element의 출력은 이전 clock cycle에 기록된 값이다.
- state element의 값을 읽는 것은 언제라도 가능하다.
- e.g) 명령어 메모리, 데이터 메모리 및 레지스터
- logic 내부에 state element가 있으면 상태를 갖게 된다.
- 회로가 저장된 정보를 기억하게 해준다.
Clocks
- 하드웨어의 작동능력은 clock에 의해 많이 좌우된다. 예를들어 assembler의 instruction 하나에 쓰이는 clock이 똑같이 10개일때 하나의 clock 즉,위의 그림의 Clock period가 짧다면 CPU가 더 수행능력이 좋아 빠를 것이다.
- 참고로, voltage는 아날로그 신호이지만,0과 1로 나타낸다.
register internals
- N-bit register(FF+FF+FF......): Flip-Flops 모음이라고 할 수 있다
- D는 "data input", Q는 "data output"이다
- D-type Flip-Flop이라고 불리기도 한다.
Digital system
- CL: combinational logic
- reg: register
- combinational Logic이 복잡하면 Clock이 커진다.
- Clock은 sequential logic elements(register)에만 연결되어 있다.
- feedback은 application에 따라 선택적이다.
Critical Path
- critical path는 두개의 register 회로 사이에 가장 오래 걸리는 경로이다.
- clock period는 critical path보다 길어야 한다. 그렇지 않으면 시그널이 제대로 다음 레지스터에 전달되지 않는다.