Henu
개발냥발
Henu
전체 방문자
오늘
어제
  • 분류 전체보기 (411)
    • DevOps (52)
      • Kubernetes (19)
      • Docker (14)
      • AWS (3)
      • Nginx (4)
      • Linux (4)
      • ArgoCD (1)
      • CN (2)
      • NATS (0)
      • Git (5)
    • Back-End (30)
      • Django (18)
      • Spring (5)
      • JPA (1)
      • MSA (5)
    • CS (87)
      • SystemSoftware (20)
      • OS (25)
      • Computer Architecture (16)
      • Network (23)
      • Database (2)
    • Lang (21)
      • Java (9)
      • Python (4)
      • C# (8)
    • Life (12)
    • 블록체인 (2)
    • Algorithm (204)
      • BOJ (160)
      • 프로그래머스 (19)
      • LeetCode (4)
      • SWEA (1)
      • 알고리즘 문제 해결 전략 (8)
      • DS, algorithms (7)
      • Checkio (5)
    • IT (2)

블로그 메뉴

  • GitHub
  • 글쓰기
  • 관리자

공지사항

  • Free!

인기 글

태그

  • DFS
  • BFS
  • django
  • Network
  • boj
  • docker
  • 다이나믹 프로그래밍
  • 백트래킹
  • Kubernetes
  • 프로그래머스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Henu

개발냥발

[컴퓨터 구조] 기억장치 모듈 설계
CS/Computer Architecture

[컴퓨터 구조] 기억장치 모듈 설계

2022. 1. 5. 23:08

칩의 각 기억장소에 저장되는 비트 수가 일반적으로 컴퓨터의 단어 길이보다 적기 때문에, 한 번에 한 단어씩 엑세스할 수 있도록 하기 위해서는 여러 개의 칩들을 병렬로 접속해야 한다.

 

컴퓨터의 단어 길이가 N비트이고 기억장치 칩의 데이터 입출력 비트 수가 B개라고 가정하자.

한 번에 한 단어씩의 데이터 엑세스가 가능하도록 하기 위해서는 N/B개의 칩들로부터 동시에 B비트씩 엑세스 할 수 있어야 한다.

 

그렇게 하기 위해 기억장치 칩들을 병렬로 접속하는 방법을 알아보자.

 

병렬 접속


16x8bit RAM

16x4bit RAM 칩의 구성이다.

칩 2개를 병렬로 접속하여 한 번에 8비트씩 읽기/쓰기가 가능하도록 설계했다.

병렬접속을 위해서 모든 주소비트들(A0 ~ A3)을 두 칩에 공통적으로 인가하며, 칩 선택(CS: chip select) 신호도 동일하게 인가한다.

 

이렇게 연결되면 두 RAM 칩에서 동일한 위치에 있는 기억 장소들에게 같은 주소가 배정된다.

두 칩의 첫 번째 기억 장소들에게 모두 '0000'번지가 배정되며, 다음 기억 장소에는 '0001', ... '1111'번지가 배정된다.

즉, 전체 주소 영역은 0000~1111번지가 된다.

그리고 RAM1의 데이터 입출력 선들은 상위 데이터 버스 선들(D7 ~ D4)과 접속하고,

RAM2의 데이터 입출력 선들은 하위 데이터 버스 선들(D3 ~ D0)과 접속한다.

따라서 어떤 한 기억장소가 선택되었을 때 각 칩에서 4비트씩, 전체적으로 8비트 데이터가 동시에 입출력 될 수 있다.

 

 

 

4K x 8bit RAM

RAM의 용량과 단어 길이의 비트수를 늘릴 경우를 알아보자

단어길이가 32비트인 컴퓨터의 기억장치 모듈을 내부 조직이 1K x 8비트인 RAM으로 구성했다.

즉, 각 읽기/쓰기 동작마다 32비트씩의 데이터가 엑세스되는 기억장치 모듈을 칩당 8비트씩 입출력되는 RAM을 이용하여 설계한 것이다.

첫 번째 예와 동일하게 모듈 내의 모든 칩들에 같은 주소를 가진 기억 장소들이 한 개씩 존재한다.

 

각 단어의 길이는 4바이트 = 32비트 이므로, 기억장치의 전체 용량은

1K x 8bit x 4개 = 32Kbit = 4Kbyte가 된다.

 

 

직렬 접속

 


32 x 4bit RAM

직렬접속을 이용하여 기억장소의 수를 확장하는 방법에 대하여 알아보자.

두 개의 16 x 4bit RAM 칩들을 이용하여 32 x 4bit기억장치 모듈을 구성한다면, 그 칩들을 직렬로 접속하면 된다.

이 경우에는 전체 기억 장소의 수가 32개이기 때문에 주소 비트는 다섯 개가 필요하다.

칩들을 직렬로 접속하기 위해서는 위 그림과 같이 최상위 주소비트인 A4를 RAM1의 CS핀으로 인가하고, 반전된 값을 RAM2의 CS핀으로 인가한다. 그림에서는 -CS 핀은 반전된 값을 받아들이므로 'active low'상태(값이 '0'일 때 칩 선택)이다.

따라서 두 RAM 칩들에게는 다음과 같은 주소 영역들이 배정된다.

RAM1 : 00000 ~ 01111

RAM2 : 10000 ~ 11111

전체 32개 기억 장소들의 주소는 00000번지부터 11111번지가 배정되었다.

이 경우 각 RAM 칩의 데이터 입출력 선들을 데이터 버스 선들(D3-D0)에 공통으로 접속하게 되면, 각 주소가 인가될 때마다 해당 기억장소가 위치한 RAM칩으로부터 4비트씩 읽기/쓰기가 수행된다.

 

 

4K x 8bit(4Kbyte) RAM

완전히 동일한 방식으로  1K x 8bit RAM 칩들을 이용하여 4K x 8bit(4Kbyte)의 기억장치 모듈을 구성해보자.

 

위 기억장치 모듈의 단어 길이는 8비트이다. 따라서 각 기억장치 주소에 대하여 RAM 칩이 한 개씩만 선택되도록 하면된다.

그리고 전체 용량이 4KByte가 되도록 하기 위해서는 모든 RAM 칩들이 순차적인 주소 영역을 가지도록 해야 한다.

그래서 위 그림처럼 4개의 RAM 칩들을 직렬로 연결한다.

 

이때 기억장치 모듈의 전체 기억 장소 수는 4K = 2^12 = 4096개가 되므로 주소 비트는 12개가 필요하다.

그런데 칩이 4개이므로 주소버스의 상위 2비트는 칩을 선택하는 CS핀으로 들어간다.

나머지 10비트는 모든 칩들에 공통으로 접속해야 한다.

 

 

병렬접속과 직렬접속을 조합하면 더 큰 용량의 기억장치 모듈도 설계할 수 있다.

실습

지금까지의 설계 방법들을 이용하여 ROM과 RAM들로 구성된 주기억장치를 가진 간단한 마이크로컴퓨터를 설계해보자.

 

  1. 컴퓨터에 필요한 전체 기억장치 용량을 결정한다.
  2. 사용가능한 칩들을 조사하고, 그들에 대한 주소 표(Address Map)를 작성한다.
  3. 세부적인 회로를 설계한다.

 

단어 길이가 8비트이고 1KByte의 ROM과 2KByte의 RAM으로 구성된 주기억장치를 가진다.
시스템 초기화 및 OS 프로그램이 저장되는 ROM들의 주소를 0번지부터 시작하고, RAM의 주소를 800H(2048)번지부터 시작한다.
사용할 수 있는 칩들로는 1K x 8bit의 ROM 1개, 512 x 8bit의 RAM 4개가 있다.

 

 

먼저 기억장치 주소 표를 만들어 보면 다음과 같다.

X는 0, 1 중의 어느 값이든 가질 수 있다는 표시이다.

 

현재 사용할 기억장치가 RAM인지 ROM인지를 구분하기 위한 1비트가 필요하다.

 

단어 길이가 8비트(데이터 버스가 8비트)이고, 사용할 수 있는 RAM의 용량이 512 x 8bit이므로 칩들을 직렬로 연결해야 한다. 따라서 직렬로 이어진 4개의 RAM중 하나를 선택하기 위한 2비트가 필요하다. -> 2 x 4 해독기

 

RAM의 기억장소에 엑세스 하기 위해 9비트가 필요하다.

ROM의 기억장소에 엑세스 하기 위해 10비트가 필요하다.

 

RAM과 ROM에 엑세스 하기 위한 주소비트는 중복될 수 있다. 따라서 비트 수를 모두 더하면 1 + 2 + 10 = 13비트가 필요하다.

 

그런데 ROM을 사용할 때를 생각해보자.

직렬로 이어진 4개의 RAM중 하나를 선택할 수 있게 해주는 2비트가 있었다. 이 2비트는 ROM에 접근할 때는 사용되지 않기 때문에 하나를 빌려서 기억장소에 엑세스 하기 위한 주소 비트로 사용할 수 있다.

결국 하나의 비트가 2개의 역할을 해 줌으로써 총 12개의 주소비트를 사용하게 된다.

 

 

이를 바탕으로 한 최종 설계도는 다음과 같다.

 

 

 

 

연습문제


5.10

더보기

16 x 4비트 RAM 칩들을 이용하여 32 x 8비트 기억장치 모듈을 설계하고, 각 칩에 할당된 주소 영역을 2진수로 표시하라.

 

 

 

5.11

더보기

1K x 8비트 RAM 칩들을 사용하여 2K x 16비트 기억장치 모듈을 구성하는 회로를 설계하고, 각 칩에 할당된 주소 영역을 2진수로 표시하라.

 

 

 

'CS > Computer Architecture' 카테고리의 다른 글

[컴퓨터 구조] 인터럽트와 DMA를 이용한 I/O  (0) 2022.01.13
[컴퓨터 구조] 캐시 메모리  (0) 2022.01.06
[컴퓨터 구조] RAM & ROM  (0) 2021.12.30
[컴퓨터 구조] 기억 장치 기본  (0) 2021.12.29
[컴퓨터 구조] 제어 유니트 (Control Unit)  (0) 2021.12.26
    'CS/Computer Architecture' 카테고리의 다른 글
    • [컴퓨터 구조] 인터럽트와 DMA를 이용한 I/O
    • [컴퓨터 구조] 캐시 메모리
    • [컴퓨터 구조] RAM & ROM
    • [컴퓨터 구조] 기억 장치 기본

    티스토리툴바