728x90
Memory Transfer

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
      • 레지스터는 일부만 접근할 수 없으므로 반드시 전체를 복사
  • 레지스터와 메모리의 차이
    • 레지스터는 항상 데이터가 출력중 : 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

+ Recent posts