728x90
Memory Transfer
- 메모리에 데이터를 읽거나 쓸 때 필요한 버스(신호)
- Address
- Data
- Control(Read, Write, etc...)
- 데이터의 이동
- DR << M[AR] : address + data + control(read)
- DR : Data Register
- AR : Address Register - 메모리의 AR 주소에 해당하는 데이터
- M[AR] << R1 : address + data + control(write)
- 1번 레지스터의 내용 전체를 AR주소로 Write
- 레지스터는 일부만 접근할 수 없으므로 반드시 전체를 복사
- DR << M[AR] : address + data + control(read)
- 레지스터와 메모리의 차이
- 레지스터는 항상 데이터가 출력중 : BUS와 Load 신호로 입-출력 조정
- 메모리는 Control Signal을 통해 입-출력 조정
Arithmetic Microoperations
- Add operation
- R3 << R1 + R2
- 덧셈 : 모든 산술연산의 기본 ex. 뺄셈 : R3 << R1 - R2 = R1 + (R2' + 1)
- Full-Adder
- A + B + Cin = S + Cout
- 아랫 자리에서의 올림수 Cin이 입력에 추가되고, 윗 자리로의 올림수 Cout이 출력에 추가
- Ripple Adder : 전가산기 다수를 연결 - 구조가 단순하지만, 자리수가 커질수록 연산이 느려짐
- Binary adder-subtractor
- M 신호가 0이면 adder, 1이면 subtractor로 동작
- M이 1일 경우 XOR에 1 입력으로 인해 B의 숫자는 2의 보수로 출력되고, Carry in에 1이 들어가 감산기로 동작 (R3 << R1 - R2 = R1 + (R2' + 1))
- Binary incrementer
- 반가산기(Carry in이 없음)의 한쪽 값에 항상 1이 들어감
Logic Microoperations
- 산술이 아닌 논리이므로 carry 없이 입력만으로 계산
- 각 논리연산 (AND, OR, XOR, Not...)의 결과를 MUX로 출력 선택
- n-bit unit : bit 개수만큼의 mux 연결
Shift Microoperation
- Shift operation의 종류
- Logical, shl/shr (0 채우기)
- Circular, cil/cir (rotational shift)
- Arithmetic shift, ashl/ashr
- ex. signed two's complement number (MSB가 1이면 -, 0이면 +)
- shift right : sign bit는 변하지 않고, 해당 자리를 제외한 MSB를 sign으로 채움
- ( ex. 1000 >> 1100 , 0111 >> 0011)
- shift left : LSB는 0으로 채워짐, 나머지는 왼쪽으로 shift
- ( ex. 0111(7) > 1110(-2, overflow), 1011(-5) >> 0100(6) )
- Overflow check : (MSB) XOR (MSB 바로 아래 bit) = 1이면 overflow
- Shift circuit
- S = 0 >> MUX의 0 input 출력 : A2 A1 A0 IR
- S = 1 >> MUX의 1 input 출력 : IL A1 A2 A3
728x90