메모리와 디스크의 핵심: 메모리 조직과 주소 지정

EOH·2023년 4월 5일
0

<CS> Hello, Computer World!

목록 보기
10/12
post-thumbnail

🚗 메모리 컴포넌트의 구조

메모리 컴포넌트란?

컴포넌트는 독립적인 단위의 소프트웨어 모듈을 뜻한다.
메모리 컴포넌트는 ‘저장장치 컴포넌트’ 라는 뜻이다.

앞 시리즈에서 정리했듯 한 가지 비트를 저장할 때는 플립플롭이, 여러 비트를 저장할 때는 레지스터를 사용한다.
하지만 레지스터 하나 만으로는 충분하지 않을 것이다. 더 많은 정보들을 저장하려면 어떻게 해야할까?
간단히 생각하면 레지스터를 여러 개 사용하면 된다. 레지스터를 많이 쌓아둔 장치를 만들어 각 레지스터에 저장하면 된다. 이 때 어떤 레지스터에 어떤 정보가 들어있는지 알기 위해 각 레지스터에 번호를 부여한다면 데이터의 관리가 더 쉬울 것이다.
지정 주소에 해당하는 레지스터에서 데이터를 출력하려면 여러 입력 중 한 입력을 선택해서 디코딩하도록 실렉터를 사용한다.
또 여러가지의 출력을 묶어서 한 출력으로 연결하려면 트라이스테이트(tri-state)출력이라는 다른 기본 요소도 필요로 한다.

한 권으로 읽는 컴퓨터 구조와 프로그래밍, 조너선 스타인하트, 책만, 149p

위 메모리 컴포넌트의 구조를 그림으로 표현하면 이런 모양이 된다. 그림에는 입력 화살표가 하나가 있지만 사실 레스트더의 갯수만큼 화살표가 추가되어야하며 출력도 마찬가지이다. 이런 연결을 줄이기 위해 입력과 출력 데이터 연결을 합치고 read/역write제어신호를 사용하게 되었다.

한 권으로 읽는 컴퓨터 구조와 프로그래밍, 조너선 스타인하트, 책만, 149p

그럼 이렇게 간단한 메모리 칩을 만들 수 있다.
입력과 출력부분이 훨씬 간단해졌다.
그리고 주소와 데이터를 큰 화살표로 묶어놓은 것을 볼 수 있다. 개별이 아닌 하나의 연관된 신호인 ‘버스(bus)'를 사용하는 것이다. 이 버스는 같은 목적을 가진 비트를 한 번에 이동시키는 신호이다. 운송수단처럼 사용한다고 ’버스‘라는 이름이 붙지 않았나 싶다. 메모리칩에는 주소버스와 데이터버스가 있다고 볼 수 있다.

🚕 메모리의 주소 지정방법

메모리의 크기가 늘어날 수록 연결해야할 주소도 많아진다. 메모리는 하나의 도시에 비교해서 생각하면 쉽다. 도시의 구역을 나누어서 관리하듯 메모리도 격자로 구역을 나누면 관리가 쉬워진다.

출처 : https://returnclass.tistory.com/226

위 그림처럼 메모리를 관리하면 주소가 행, 열 두 부분으로 나뉘에서 들어온다. 3행 2열, 1행 5열번째 메모리 이런 식으로 주소를 붙이는 것이다. 주소를 두 부분으로 생기는 이점은 한 번에 한 부분씩 변경이 가능해 성능을 향상시킬 수 있다는 것이다. 행 주소를 먼저 지정하고 열 주소만 변화를 주면 더 빠르게 처리를 할 수 있다. 이렇게 메모리 주소를 나누는 것을 멀티플렉싱(multiplexing)이라고 한다.

한 권으로 읽는 컴퓨터 구조와 프로그래밍, 조너선 스타인하트, 책만, 150p


위 그림은 레지스터를 사용하는 메모리이다. 멀티플렉싱한 주소를 저장하기 위해서는 열 주소 레지스터와 행 주소 레지스터가 따로 필요하다.

profile
에-오

0개의 댓글