태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
2009.09.25 23:46

8051계열을 가지고 놀다가 x86 system을 처음으로 접하면서 겪은 가장 큰 어려움은 RAM에 대한
이해였다
.
8051
계열에선 RAM이라 하면 SRAM을 지칭하는 것이었고 사용에 있어서 스피드외엔 크게 주의를요하지
않았다
.

하지만 x86계열에선 거의 DRAM을 사용하고 있었고 사상누각뿐인 내 머리에서 붕괴가 일어나기
시작했다
.
서론은 여기까지 하고 x86 system을 가지고 놀기위해 가장 기본적으로 DRAM을 살펴본다.

1. SRAM
DRAM의 차이
2. DRAM
의 특징
3. DRAM
의 기타 주요사항
이와같이 접근하기로 한다.

1. SRAM
DRAM의 차이
-SRAM :
정적램
-DRAM :
동적램

-SRAM :
플립플롭으로 구성 (데이터 보관용이)
-DRAM :
콘덴서로 구성 (데이터를 유지하기위해 주기적인 refresh가 필요)

-SRAM :
빠른속도, 비싼가격, 캐쉬 메모리로 주로 사용됨
-DRAM :
높은 메모리 집적도, 싼 가격, 낮은 전력소모

2. DRAM
의 특징
삼성전자에서 나오는 K4H511638C-UC/LB0을 살펴보기로 한다.
K4H511638C-UC/LB0
32Mx16으로 이루어진 DDR266, 512Mbit DRAM이다.

어드레스핀의 갯수는 해당 RAM의 용량을 결정하지만 용량을 크게하기 위해서 무턱대고 핀의 수를
늘리면 고집적도와 소형화를 할 수 없다
.
그래서 DRAM에서 선택한 방법이 행렬의 배열이다.
한 핀으로 row column의 역할을 동시에 하는 것이다.
물론
 CPU AM A0핀을 access 할 때 row로 쓰인것인지 column으로 쓰인것인지 알려줘야만 한다.

(row)과 행(column)으로 이루어진 방들의 구조를 생각해 보면 쉽게 접근할 수 있다.
K4H511638C-UC/LB0
Row(A0~A12), Column(A0~A9)로 이루어져 있다.


위의 방들이 모두 Low 이면 0x 000 0000 0000 0000 0000 0000 이고
위의 방들이 모두 High 이면 0x FFF FFFF FFFF FFFF FFFF FFFF 이 되는 것이다.

나올 수 있는 모든 경우의 수는 2^(13+10)이며 위의 방과 똑같은 구조가 3개나 더 있는 것이다
.
(4Banks
라고 Datasheet에 나와있지 않은가
...)

종합해 보면 아래와 같이 간단히 나타낼 수 있다
.
2^(13+10) = 8M, 4Banks, 16bit data
로 의해서 512Mbit의 용량이 되는 것이다
.

여기까지 용량과 간단한 구조를 확인 했으니 이번엔 전체 흐름을 느껴보자
.

Row
쪽 어드레스인지 Column쪽 어드레스인지를 식별 해 주는 시그널이 strobe이다
.

[CPU
DRAM에서 데이터를 가져오는 순서]
Row address를 날린다.
RAS (Row address strobe)로 확인 시켜준다
.
Column address를 날린다
.
CAS (Column address strobe)로 확인 시켜준다
.
DRAM에서 데이터가 꿈틀 꿈틀 나온다
.

이처럼 DRAM을 억세스 하려면 열과 행 어드레스가 인가되는데 이를 위해 DRAM 외부에는 멀티플렉스
회로가 필요하고 내부에는 디멀티플렉스 회로가 필요하다
.
그 외에 DRAM의 사용에는 RAS, CAS, Refresh같은 복잡한 회로가 필요하여 대용량의 RAM이 필요하지
않는
8051계열엔 SRAM이 사용되는 것이다
.

3. DRAM
의 기타 주요사항
이번엔 몇가지 전문 H/W적인것을 살펴본다. 일반인 이라면 위의 글까지 만으로 충분하지만 본인이 H/W
엔지니어라면 아래의것들이 더 중요하다고 느낄때가 있을 것 이다
.
① 메모리 억세스 시간

② 인터리빙
 Burst

① 메모리 억세스 시간

메모리 억세스 시간의 분류는 여러가지가 있겠지만 많이 쓰이고 중요한 몇 가지를 살펴본다.
tAA (address access time)
어드레스가 어드레스핀에 인가되는 순간부터 데이터핀에서 데이터를 이용 할 수 있게되는 시간까지의
간격

tCZ (access time from CS)
메모리의 CS핀이 활성화 되는 시간부터 데이터가 이용 가능해지는 시간까지
CL (CAS Latancy)
CAS
후에 몇 클록이 지나면 데이터핀에 데이터가 나타나는가
K4H511638C-UC/LB0 2.5라고 되어있다. (DDR266 @ CL=2.5)

②인터리빙

SRAM
DRAM에서 메모리를 억세스하고 데이터를 받기 까지의 시간을 비교 해 보자.

-SRAM :
억세스시간(A) + 데이터 출력시간
(B)
-DRAM :
억세스시간(A) + 데이터 출력시간
(B) + refresh(C)
위의 예는 1회 억세스 했을 떄의 기준이고 만일 100회가 이루어 진다면 100C의 시간만큼 차이가 날
것이다
.

이러한
DRAM의 충전시간 문제를 극복하는 방법 중 하나가 인터리빙이다
.

1뱅크와 제2뱅크가 있다고 하고 서로 나란히 위치 시킨다. CPU 1뱅크를 억세스 한 뒤 refresh하는
동시에
2뱅크를 억세스 하여 다음 데이터를 받는다
.

어떤가... 충전시간이 다른 뱅크의 억세스 시간에 가려지게 되었다
.
이것이 인터리빙 인터페이싱이다. 개인적으로 이 부분에서 감동의 충격을 받았다
.

Burst
데이타 시트를 볼 때마다 burst mode지원이라던가 burst length라는 단어를 많이 봤었다.
Burst
'폭발'이란 뜻으로 아는데 확실하진 않다. 대체 이게 무엇인가
...

일반적으로 데이터를 읽기는 어드레스와 RAS, CAS가 따른다. 그런데 보통 연속된 어드레스를 억세스
하므로
CPU입장에선 계속 어드레스를 날리는 것이 여간 귀찮지 않을까
.

그래서 예를 들어 버스트 길이를 8로 약속(프로그램)하면 첫번째 위치에대해 RAS의 전체 주소가 필요하고 CAS가 뒤따르지만 두번째, 세번째, ... 여덟번째에 대해서는 무상(?)으로 데이터를 얻을 수 있는
것이다
.

시간도 절약되고
CPU의 부하도 덜고
...
이는 CPU DRAM이 동기된 클럭으로 움직이니까 가능하다
.

버스트 읽기의 수는 1, 2, 4, 8, 16 또는 256 이 될 수있고 전체 페이지 크기까지 커질 수 있다고 하며
버스트
SDRAM은 미리읽는 수를 프로그램 할 수 있다고 한다
.

이것으로 DRAM을 대충 훓어 보았다
.
기회가 된다면 Layout에 관해서도 논할 예정이다
.

[
참고
]
The 80x86 IBM PC and Compatible Computers (Volume II)

-Muhammad Ali Mazidi, Janice Gillispie Mazidi-
 

포스트의 부족한 내용이나 아쉬운 부분을 본 페이지에 특화된 google검색을 통해서 알아보세요.
Custom Search

'[HARDWARE] > CORE' 카테고리의 다른 글

DDR2 SDRAM의 동작원리 - ODT  (14) 2009.10.09
DDR2 SDRAM의 동작원리 - 4bit PREFETCH  (0) 2009.10.09
DDR2 SDRAM Layout Guide  (1) 2009.09.29
DDR SDRAM의 동작 구조  (0) 2009.09.25
CISC vs RISC  (0) 2009.09.25
Posted by nooriry

댓글을 달아 주세요