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 제조시에 정보가 미리 저장됨
- 비휘발성 : 전원을 꺼도 데이터가 보존됨
- 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의 곱셈 테이블이 크기만큼 저장
- 테이블에는 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, 데이터를 특정 구획(블록) 단위로 소거
- Mask ROM
- 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의 전환 주기가 매우 짧아 키패드 전체를 확인 가능