728x90
Computer Architecture

Computer Architecture

  • CPU : 중앙 연산 장치, 마이크로프로세서의 일종
    • 마이크로프로세서 : 메모리에서 데이터를 읽어들여 명령어를 처리하는 IC
    • 명령어 자체는 외부(메모리)에 저장
  • 메모리 : 명령어, 데이터가 저장됨
    • CPU와 메모리는 address, data, control의 3가지 bus로 통신한다.
    • address : 데이터가 저장된 주소
    • data : 해당 주소에 저장된 데이터
    • control : read / write 지정
    • 메모리의 크기는 address와 data의 곱
    • 한 주소에 접근하게 되면, 그 주소의 모든 데이터를 동시에 읽거나, 써야 한다.
  • 이때 버스와 소자는 Tri-state buffer로 연결한다.
    • CPU-메모리 소자는 1:n으로 연결되는데, 만약 Tri-state가 아닌 경우 통신하는 임의 메모리가 아닌 다른 소자는 Ground되어, 통신 신호가 그쪽으로 빠져나갈 수 있다.
    • Tri-state off의 경우 Hi-Z상태로 되어 회로가 마치 분리된 듯한 상태가 되어, 통신하는 신호가 온전히 CPU로 전달될 수 있다.

  • ROM
    • Read-Only Memory
    • CPU와의 연결 시 address bus, 단방향 data bus(ROM > CPU), read signal만 전송 가능한 control bus로 연결
    • ROM 제조시에 정보가 미리 저장됨
    • 비휘발성 : 전원을 꺼도 데이터가 보존됨
    • 2n×b2^n\times b ROM의 경우 n개의 address bus 입력을 받으면, b개의 data가 출력
    • ROM 내에는 디코더가 존재
      • n-bit address 신호를 받았을 때, ROM 내 주소에 저장되어있는 b개의 데이터 중 하나를 선택하여 bus로 출력
      • Combinational logic으로도 구현 가능하지만, 데이터가 많으면 과하게 회로가 복잡해지고, 사용해야 하는 트랜지스터 수도 비정상적으로 많아져 잘 쓰이지 않는다.
      • 실제로는 1bit당 트랜지스터 하나에 0/1을 인가하여 데이터 저장
      • 만약 위 8×4 ROM의 경우, 만약 000 주소신호를 주면 Y0 : 0100의 신호를 D3-D0 버스로 출력하게 된다.

ROM Application

  • Multiplier
    • 주소 Bus의 입력은 a개의 multiplicand와 b개의 multiplier로 구성
    • ROM 내부에 (a+b) bit의 곱셈 테이블이 2a+b2^{a+b} 크기만큼 저장
    • 테이블에는 a x b의 값이 각 주소에 맞게 저장
    • 만약 multiplicand에 1, multiplier에 2를 입력한다면, 테이블에서 출력되는 값은 2가 된다
    • 실제 회로에서, 곱셈기는 CPU와 연결된 다수 소자 중 하나일 것
      • address bus를 통해 지정된 주소값이 전달되면 곱셈기가 on이 된다.
      • data bus를 통해 곱셈기 입력을 넣어준다
      • 출력되는 곱셈값은 다시 data bus를 통해 CPU로 입력된다.
  • Adder
    • multiplier와 같은 원리로 구성
    • ROM 내부에는 2개 addend의 합으로 구성되는 테이블이 존재

  • 내부 ROM 구조
    • ROM의 구현 방식은 매우 다양하게 존재
    • 예시 : 다이오드를 이용한 ROM 회로
      • 디코더 출력이 Low로 나타나므로, 다이오드가 연결된 회선은 Low가 될 때 +5V 신호가 디코더쪽으로 빠져나간다.
      • 그 외에는 모두 High가 출력
      • 출력단 D쪽에 인버터가 연결되어 있으므로, 디코더가 low가 되는 Y5라인은 원래는 1101에서 0100으로 신호가 반전 출력된다.
      • 예시 : Transistor ROM 회로
        • 디코더에 high출력이 될 경우 트랜지스터가 on 상태로 변한다.
        • MOS에 의해 VDD신호는 그라운드로 들어가게 된다.
        • 즉 맨 윗줄의 경우 왼쪽부터 0010 신호가 된다.

  • 2-Dimensional Decoder
    • ROM 내부의 디코더를 설계 시, 입력 크기가 커지면 그에 따라 디코더 출력이 지수적으로 증가
    • 만약 입력이 32개만 돼도, 출력은 약 4억개, 사실상 설계가 불가능한 회로이다.
    • 복잡한 디코더 설계를 위해, Address bus를 나누도록 설계
    • A0 ~ A6의 신호를 각 3, 4bit로 나누어 디코더와 MUX로 연결
    • A가 0010111이면, A6, 5, 4는 001신호가 연결, 디코더 1번출력만 유효
    • MUX로 1111 1110 1110 1000 신호 인가, inverting input이므로 0000 0001 0001 0111 이 들어옴
    • MUX에는 0111 신호가 입력되었으므로 7번째 입력이 출력
    • 그러므로 해당 2D decoder는 1을 출력한다.

  • 상업용 롬 종류
    • Mask ROM
      • 반도체 설계 과정에서 NMOS/CMOS (or BJT) 설계 시 마스크를 이용하여 데이터 기록
      • 재기록 불가
      • 데이터 기록 시간 ( = 마스크 공정 시간 )이 오래 걸림
      • BJT ROM은 MOS 대비 밀도가 낮음
    • PROM (Programmable ROM)
      • BJT소자로 제작
      • 쓰는데 약 10~50us : 공정 생산 후 writer를 통해 강한 전류를 가해 데이터 저장
      • 재기록 불가
    • EPROM (Erasable PROM)
      • NMOS, CMOS로 제작
      • 자외선에 노출하여 정보를 지운 후 재기록 가능
    • EEPROM (Electrical EPROM)
      • NMOS로 제작
      • 역방향 전압을 가해 데이터 소거
      • 10,000 ~ 100,000회 재기록 가능
      • EPROM 대비 읽는 시간이 조금 더 김
      • 기록 : WE on, OE off + A(주소)
      • 출력 : WE off, OE on
    • Flash EPROM(플래시메모리)
      • EEPROM, 데이터를 특정 구획(블록) 단위로 소거

  • ROM 내부 구조
    • ROW decoder / Colmun decoder : array에 저장된 주소 선택
    • CS : 칩 선택, 동작할 필요가 없을 때 off시켜 전력소모 경감 (Active 대비 1/10)
    • OE : 출력 enable

Static RAM (SRAM)

  • RAM(Random Access Memory)
    • 읽기/쓰기 가능
    • 위치에 무관하게 읽고 쓰는 시간이 동일
    • ROM 역시 RAM의 일종이지만, 주 기능이 읽기이므로 RAM과는 구분
  • SRAM(Static RAM)
    • 전력이 공급되는 동안만 정보가 저장
    • 1개 cell은 AND(컨트롤 신호에 따라 동작), D-Latch(정보 저장), 3-state buffet(컨트롤 신호에 따라 동작)으로 구성
  • DRAM(Dynamic RAM)
    • 트랜지스터 + 커패시터 1개씩으로 구성되어 SRAM 대비 크기가 작음
    • word line : 주소 지정
    • bit line : 정보 지정
    • precharge : 0 상태에서 1 상태로 충전하기까지 걸리는 시간이 있으므로, 빠른 동작을 위해 중간 전압으로 bit line을 설정한다. 증폭기를 이용하여 전압이 약간만 상승해도 1 상태가 된 것으로 인식하여 빠르게 신호를 전환한다.
    • 커패시터 소자 주변에는 기생 저항/커패시터가 존재하기 때문에 동작에 따라 저장시켜둔 신호값이 휘발 > 주기적으로 refresh해주어야 함

SDRAM(Synchronous DRAM)

  • decoder and latch : latch는 주소를 저장하여 처음 12bit를 저장 후, 나머지 10bit를 받아들여 12bit 주소 bus(A[11:0])을 통해서 총 22bit(4096 array) 주소에 접근 가능하도록 한다.
  • mux and demux : 데이터를 출력할 때는 mux, 입력할때는 demux를 이용하여 데이터 column을 선택한다.
  • 입력, 출력 refresh 등의 명령은 CMD 버스를 통해 명령어를 전달하여 동작을 지시하며, 같은 address를 row/column으로 나누어 지정 가능하기 때문에 일반 ROM/RAM 대비 같은 address line으로 더 큰 데이터 접근 가능
  • 장점 : 주소 pin의 개수 감소, 클락에 맞추어 메모리에 2-step으로 간단히 접근(주소 입력 - 데이터 접근)

  • Read Cycle
    • PRE : bit line을 precharge
    • ACTV : address bus의 row address 신호를 latch에 저장
      • PRE-to-ACTV delay : precharge가 완료되기까지 걸리는 시간
    • READ : coloumn address 신호를 이용하여 지정한 주소의 신호를 출력
      • RAS(Row Address Stroke)-to-CAS(Column Address Stroke) delay : 읽어들인 row address가 row latch에 모두 저장되기까지의 시간
      • CAS Latency : 데이터가 출력되기까지 걸리는 시간 (refresh과정 포함)
  • Write Cycle : Read 대신 Write 신호를 입력
    • 입력 시 원하는 주소에만 부분적으로 쓸 때, 먼저 저장되어있던 데이터를 Column latch에 저장 후, 원하는 주소만 갱신한 뒤 해당 row에 덮어쓰는 방식으로 데이터 저장

  • Burst Read/Write
    • 같은 Row에 대해 연속된 column은 RAM 내부에서 주소를 증가시키면서 한번에 읽기/쓰기 동작
    • single read/write 대비 clock 수 감소, 주소 계산 경감
  • DDR(Double Data Rate) SDRAM
    • 신호를 더 빠르게 처리하기 위해 통상 rising edge때 동작하는 신호를, rising/falling 모두를 클록 기준으로 설정
    • burst mode에서 데이터가 이동하는 속도가 2배(명령 시간은 동일)

Example

  • 키패드
    • CPU에서 디코더로 주소 신호를 주면 버튼을 인식할 row 선택
    • high가 된 row에서 버튼이 눌리게 되면 신호가 Data bus로 전달
      • low인 row는 버튼을 눌러도 인가 전압이 0V쪽으로 흘러 신호가 전달되지 않음
    • CPU는 처음 지정한 address와 나중에 들어온 data를 조합하여 좌표 확인
    • row의 전환 주기가 매우 짧아 키패드 전체를 확인 가능
728x90

+ Recent posts