590 likes | 1.42k Views
교과명 : 컴퓨터 구조 내부 기억장치. 남영진 (yjnam@daegu.ac.kr) 대구대학교 정보통신대학 컴퓨터 .IT 공학부 , 공대 3516A 호 Tel: 053-850-6586. 반도체 기억장치 종류. 반도체 기억장치의 기본 요소. 기억소자 (memory cell) 두개의 안정된 상태 (0 or 1) 을 가짐 상태를 set & sense 할 수 있음. 반도체 주기억장치. Dynamic RAM(DRAM) 커패시터 (capacitor) 에 전하를 충전하는 방식으로 데이터를 저장
E N D
교과명: 컴퓨터 구조내부 기억장치 남영진 (yjnam@daegu.ac.kr) 대구대학교 정보통신대학 컴퓨터.IT 공학부, 공대3516A호 Tel: 053-850-6586
반도체 기억장치의 기본 요소 • 기억소자(memory cell) • 두개의 안정된 상태(0 or 1)을 가짐 • 상태를 set & sense 할 수 있음
반도체 주기억장치 • Dynamic RAM(DRAM) • 커패시터(capacitor)에 전하를 충전하는 방식으로 데이터를 저장 • 커패시터의 방전 성질 때문에, 주기적으로 재충전(refresh) • 아날로그 장치 & 휘발성 • Static RAM에 비해서 per-bit 회로가 간단하고 면적이 작음 • 높은 밀도 & 가격이 저렴 • 재충전 회로의 지원이 필요 • Static RAM에 비해서 다소 느림
write read “1” DRAM 동작 • Bit에 대한 읽기/쓰기 요구 발생 • Transistor switch가 닫힘 • Write 경우 • bit line전압: high for 1 & low for 0 • address line값 = 1: 전하(charge)를 커패시터로 이동 • Read경우 • address line 값 = 1: 커패시터에 저장된 전하값들이 bit line을 통해서 sense amplifier로 이동 • 이 값을 reference 값과 비교하여 저장된 값이 0 or 1인지 판별 • 커패스터 내의 전하들이 재충전 Switch Is “DRAM cell” Flip-Flop 장치?
반도체 주기억장치 • Static RAM(SRAM) • 전원이 공급되는 동안 데이터 값을 계속 유지함(no charges to leak) • 재충전(refresh) 회로가 필요 없음 • 디지털(flip-flop) 장치이고, 휘발성 • DRAM에 비해서 per-bit 회로가 복잡하고 면적이 더 큼 • DRAM에 비해서 빠름 • 캐쉬 기억장치로 많이 이용
SRAM 동작 – “1”인 상태 • CMOS Transistor • n-type: T1, T2 • p-type: T3, T4 • B=“1” & Address line=“1” • C1 high, C2 low • T1 T4 off, T2 T3 on 1 1 on off 0 1 0 off on 0 1
SRAM 동작 – “1”인 상태 • Address line=“0” • C1 high, C2 low값이 계속해서 유지됨 • T1 T4 off, T2 T3 on
SRAM 동작 – “0”인 상태 • B=“0” & Address line=“1” • C1low, C2high • T1 T4 on, T2 T3 off 1 0 off on 1 0 1 on off 0 1
SRAM 동작 • Address line:T5, T6 • Write 경우 • 데이터 값 B • 데이터 값’ B’ • Read경우 • 데이터 값 bit line B
차이점 DRAM SRAM 밀도(density) 높음 낮음 가격 높음 낮음 Refresh회로 필요 불필요 읽기/쓰기 속도 느림 빠름 용도 대용량 주기억장치 캐쉬 Dynamic RAM vs. Static RAM • 공통점: 휘발성 • 데이터 값을 유지하기 위해서는 전원공급을 계속해야 함
Read Only Memory(ROM) • 비휘발성(non-volatile) • 비트값이 기억장치에서 유지되도록 전원을 공급할 필요가 없음 • ROM의 주요 사용분야 • 변경이 거의 일어나지 않는 부분들 • 예: 라이브러리 서브루틴 시스템 프로그램(운영체제, …)
ROM 종류 • ROM • 제조과정에서 데이터들이 실제 선들의 접속을 통하여 칩 속에 내장 • 변경이 불가능 • Programmable ROM • 한번만 “전기적인 방법으로” 쓰는 것이 가능 • 쓰기 (프로그래밍)를 위해서 특수한 장치가 필요 • Erasable Programmable ROM(EPROM) • 쓰기 전에 자외선을 이용하여 모든 cell을 초기상태와 같도록 지움 • 반복적으로 지울 수 있음 (20분 정도 소요)
ROM 종류 • Electrically Erasable PROM(EEPROM) • 전기적으로 삭제가 가능 • 쓰기 전에 그 이전의 내용을 지울 필요가 없음 • 주소 지정된 한 byte or 몇 bytes들만 갱신 • 쓰기 동작이 읽기 동작에 비해서 오래 걸림 (~수백 usec/byte) • EEPROM은 EPROM보다 비쌈; 밀도도 낮음 • Flash Memory • 전기적으로 삭제가 가능 (전체 기억장치가 ~수초 내에 삭제) • 칩 전체가 아닌 블록 단위의 삭제가 가능 • 밀도 높음 (EPROM과 같은 정도의 높은 밀도를 달성)
Flash Memory • Two main technologies dominate the non-volatile flash memory market today. • NOR flash was first introduced by Intel in 1988. • NAND flash architecture was introduced by Toshiba in 1989. • NOR is typically used for code storage and execution. • NAND is mostly used for data storage.
Flash Memory • Bit flipping • Bit flipping is that a bit is reversed. • If the bit was actually reversed, an error detection/correction algorithm must be applied. • Bit flipping is more common in NAND devices than in NOR. • Bad block handling • NAND devices(only) are shipped with bad blocks randomly scattered throughout them. • NAND devices requires initially scanning the media for bad blocks, and then mapping them all out so they are never used. • Life span/Endurance <source: M-Systems White Paper>
Multi-Level Cell(MLC) NAND • MLC NAND allows a 2-bit representation on a single physical cell. • MLC NAND offers a breakthrough in cost structure, yet reliability and performance are problematic. <source: M-Systems White Paper>
NOR vs. NAND <source: M-Systems White Paper>
NOR vs. NAND <source: M-Systems White Paper>
NOR vs. NAND <source: M-Systems White Paper>
CPU & Main Memory Interface (Cont’d) • b<w이면, 주기억장치는 w/b개의 b-비트 전송 • 일부 CPU는 읽기와 쓰기 워드 크기가 <w일 수 있음 • 예: Intel 8088: m=20, w=16,s=b=8 • 8-,16-비트 값을 읽고/씀 • 메모리가 충분히 빠르거나 응답이 예측 가능하면, • COMPLETE 생략 가능 • 일부 시스템은 R과 W 신호를 분리해서, REQUEST 생략 가능
Word 크기 Memory-addressable 크기 • Word크기의 데이터 저장시 • Little endian & Big endian 문제 발생 • Little endian : low-order byte of the number => lowest address • Big endian : high-order byte of the number => lowest address • Example: Byte3 Byte2 Byte1 Byte0 Base Address+0 Byte0 Base Address+1 Byte1 Base Address+2 Byte2 Base Address+3 Byte3
Little-endian & Big-endian • If you read a BMP file on a machine using "Big Endian" integers • You must first reverse the byte order Adobe Photoshop -- Big Endian BMP (Windows and OS/2 Bitmaps) -- Little Endian GIF -- Little Endian IMG (GEM Raster) -- Big Endian JPEG -- Big Endian MacPaint -- Big Endian PCX (PC Paintbrush) -- Little Endian PostScript -- Not Applicable (text!) QTM (Quicktime Movies) -- Little Endian (on a Mac!) Microsoft RIFF (.WAV & .AVI) -- Both Microsoft RTF (Rich Text Format) -- Little Endian SGI (Silicon Graphics) -- Big Endian TGA (Targa) -- Little Endian TIFF -- Both, Endian identifier encoded into file
Little-endian & Big-endian • Programming: Checking Endianess main() { unsigned int val; unsigned char *c; val = 0x11223344; c = (unsigned char *)&val; if ( *c == 0x11 ) printf(">> big endian\n"); else printf(">> little endian\n"); printf(": addr[0x%08x] = 0x%2x\n", c, *c); printf(": addr[0x%08x] = 0x%2x\n", c+1, *(c+1)); printf(": addr[0x%08x] = 0x%2x\n", c+2, *(c+2)); printf(": addr[0x%08x] = 0x%2x\n", c+3, *(c+3)); }
Little-endian & Big-endian • Programming: Reversing the Byte-Order unsigned int reverse(unsigned int val) { unsigned char b0, b1, b2, b3; unsigned int rev; b0 = (val & 0x000000ff) >> 0; b1 = (val & 0x0000ff00) >> 8; b2 = (val & 0x00ff0000) >> 16; b3 = (val & 0xff000000) >> 24; rev = (b0 << 24) | (b1 << 16) | (b2 << 8) | (b3 << 0); return rev; }
C P U T a p e C a c h e M a i n M e m o r y D i s k M e m o r y M e m o r y 메모리 계층 • 구성요소 • 접근형태 임의 임의 임의 직접 순차 • 용량, 64-1024+ 8KB-8MB 64MB-2GB 8GB 1TB • 바이트 • 지연시간.4-10ns .4-20ns 10-50ns 10ms 10ms-10s • (access time) • 블록 크기1 word 16 words 16 words 4KB 4KB • 대역폭System System 10-4000 50MB/s 1MB/s • clock Clock MB/s • Rate rate-80MB/s • 비용/MB High $10 $.25 $0.002 $0.01 Some Typical Values:† †As of 2003-4. They go out of date immediately.
칩 논리 – 메모리 셀 • 구현기술과 무관하게 모든 RAM 메모리 셀은 • Select, DataIn, DataOut, R/W을 포함해야 함 Select DataIn DataOut R/W Illustrative Example: Gated-D Latch w/ Select, DataIn/Out, R/W
칩 논리 – The Gated S-R Latch • The Gated S-R Latch • Requires an enable input, EN • The S & R inputs control the state to which the latch will go when a HIGH level is applied to the EN input • The latch will not change until EN is HIGH • S=1/R=0 (Set), S=0/R=1 (Reset), S=0/R=0 (hold) Active-Low S’-R’ Latch
칩 논리 – The Gated D Latch • The Gated D Latch has • Only one input (called D) in addition to EN • When the D input is HIGH & the EN input is HIGH, the latch will set • When the D input is LOW & the EN input is HIGH, the latch will reset • “The output Q follows the input D when EN is HIGH”
1x8 1D 메모리 셀 배열(w/ 8-bit 레지스터) • 전체 레지스터가 하나의 select 선으로 선택됨 • 하나의 R/W 선을 이용
4x8 2D 메모리 셀 배열 2-비트 주소 R/W는 모두 공통 양방향 8-비트 버퍼된 데이터 버스
1Mx8 2D 메모리 셀 배열 • Decoder Size? • 20 x 220 decoder • 많은 출력을 갖는 decoder를 구현하기 힘듬 • 대안은 없는가?
~사각형 배열은 IC 설계에 적합하다 행과 열을 분리해서 선택하면 65536개의 회로 요소가 아니라 256x2=512개의 회로 요소 사용! CS, Chip Select는 배열의 칩을 개별적으로 선택할 수 있도록 함 이 칩은 전원과 접지를 포함해서 핀 수가 21이므로 22핀 패키지에 들어간다 64Kx1 메모리(SRAM) 셀 배열 • 8x256 Decoder & 256x1 Mux
앞의 것과는 1개의 256-1 멀티플렉서가 아니라 4개의 64-1 멀티플렉서가 있다는 것을 제외하면 거의 차이가 없음 칩에는 전원과 접지를 포함해서 24 핀이 필요 패키지 크기와 핀 개수가 칩 비용을 좌우 16Kx4 메모리(SRAM) 셀 배열 • 8x256 Decoder & 64x1 Mux
DRAM 칩 • Refresh Overhead • Capacitor가 읽혀지지 않아서 2 or 100ms마다 refresh되지 않으면, 그 값은 0으로 변경됨 • 그 값을 유지 하기 위해서, 수 ms마다 refresh를 해야 함 • Refresh: 주기적으로 한 행 전체 값을 읽고 refresh (매우 심각)
DRAM 칩 • 핀 수 감소 • 행 주소와 열 주소를 같은 핀을 통하여 순차적으로 전송 • 이를 Time-multiplexing -> 핀수를 절반으로 줄임 • 예: 1MB x 1 DRAM 의 address pins수를 20개에서 10개로 줄임 • 대신 2개의 신호가 추가(현재 address line에 행 /열 주소가 valid 함) • RAS: Row Address Strobe • CAS: Column Address Strobe
DRAM 칩 • DRAM 칩구조 주소는 주소 버스에 RAS와 CAS를 행과 열 스트로브로 이용해서 시분할됨 핀 수: 주소 멀티플렉싱을 하지 않으면: 전원과 접지 포함 27 핀 주소 멀티플렉싱 사용: 전원과 접지 포함 17 핀
DRAM 칩 전형적인 DRAM 읽기동작 전형적인 DRAM 쓰기 동작 Data hold from RAS.
반도체 주기억장치 • Example: 16Mbit(4Mx4) DRAM 구성 RAS: Row Address Strobe CAS: Column Address Strobe Refresh Counter: Row 값을 증가시키면서 재충전 (충전 작업시 DRAM 칩 사용불가)
칩 패키징(Packaging) • 8-Mbit EPROM • Address pins: A0~A19 (1M) • Data pins: D0~D7 (8-bit) • Vcc: 전원공급, Vss: 접지 • CE: Chip Enable • Vpp: 전원 pin (write시만 공급) • Data pins: 출력만 가능
칩 패키징(Packaging) • 16-Mbit DRAM • Data lines: D0~D3 (4-bit) • Address lines: A0~A10 (211x211 = 4M) • RAS, CAS pins • Vcc: 전원공급, Vss: 접지 • CE: Chip Enable • OE: Output Enable • WE: Write Enable • NC: no connection
모듈 조직 • 256K x 8bit Word • 18bit address lines가 필요 • 9bit row address와 9bit column address 각각이, • 8개의 256K x 1bit 칩에 연결 • 각 칩은 1bit 입출력 선
모듈 조직 • 1M x 8bit Word • 20bit address lines가 필요 • 9bit row address와 9bit column address 각각이, • 4x8개의 256K x 1bit 칩에 연결 • 상위 2bits는 • 그룹 선택 논리 모듈로 입력되어, 네 개의 그룹 중 하나를 선택 • 각 칩은 1bit • 입출력 선을 가짐
오류 정정(Error Correction) • 하드 결함(Hard Failure) • 영구적인 물리적인 결함임. • 0 or 1 값으로 고정 or 0과 1사이의 값을 가짐 • 소프트 오류(Soft Error) • 기억장치의 내용이 일시적으로 변경되는 오류 최근 대부분의 기억장치들은 하드 결함 or 소프트 오류를 검출(detect)하고 정정(correct)하기 위한 논리회로를 포함
오류 정정 코드(Error Correction Code) • 한 word 내에서 detect & correct되는 오류 bits 수에 따라서 결정 • 실제 word 크기 = 저장될 데이터 bits(크기 M) + 검사 bits(크기 K) • Word가 도착 했을 때, 오류-정정 코드 동작: • 오류 검출되지 않음: 인출된 데이터를 그대로 내보냄 • 오류가 검출되었으며, 정정이 가능함: 데이터 bits + 오류 정정 bits들이 corrector의 입력으로 들어와서, 정정된 M bits가 생성 • 오류가 검출되었으며, 정정이 불가능함: Error signal을 통해 상태보고 Compare의 결과값: Syndrome word
1-bit 오류 정정 가능. Hamming(SEC) 코드 • Single-Error-Correction(SEC) 코드 • Example: 4-bit word(M=4)에 대한 SEC Hamming 코드 내부 구획: 네개의 데이터 비트를 지정 나머지 구획: Parity bits로 채움 각 원내에 존재하는 “1”의 개수가 짝수가 되게 유지 (Even Parity)
Hamming(SEC) 코드 • 데이터 M bits와 검사 K bits 관계 • M bits 데이터에 대해서 single error를 correction하려면 적어도 K bits의 부가적인 code가 존재해야 함 • Example: 8개의 데이터 bits를 가진 단어를 위한 최소 K 값은? • K=3: 23 – 1 < 8 + 3 • K=4: 24 – 1 > 8 + 3 2K – 1 M + K
Bit Position 12 11 10 9 8 7 6 5 4 3 2 1 Position Number 1100 1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 검사 bit C8 C4 C2 C1 Hamming(SEC) 코드 • 데이터 bits & 검사 bits의 배치도 (M=8, K=4인 경우) 데이터 bit D8 D7 D6 D5 D4 D3 D2 D1 C1 = D1 D2 D4 D5 D7 C2 = D1 D3 D4 D6 D7 C4 = D2 D3 D4 D8 C8 = D5 D6 D7 D8