티스토리 뷰

CPU와 메모리 및 I/O 장치들의 상호 작용

 

 


시스템 버스 (System Bus)

CPU와 시스템 내 다른 요소들의 정보 교환 통로시스템 버스(System Bus)가 사용된다.

시스템 버스는 3가지 종류로 하위 분류된다.

 

참고 자료

 

주소 버스 (Address Bus)

  • CPU 외부에 발생하는 주소 정보를 전송하는 신호 선들의 집합이다.
    • 메모리의 주소나 I/O Unit의 포트 번호를 전달한다.
  • CPU와 Memory는 단방향으로 데이터 전달이 가능하며 주소 전달은 CPU에서 메모리로만 가능하다.
  • CPU, Memory는 I/O Unit과 양방향으로 데이터 전달이 가능하다.
  • 주소 선들의 수는 CPU와 접속될 수 있는 최대 메모리(Memory) 용량이 결정한다.
    • CPU가 발생하는 주소 비트들의 수는 주소 버스의 폭(width)이라고 한다.
    • 만약, 폭이 $16$ bit 일 경우, $16$bit $= 2^{16} = 65,536$개(64,000개)의 기억장소들의 주소를 지정할 수 있다.
심심해서 해보는 계산 놀이
주소 버스 폭이 지정된 경우 최대 메모리 용량을 알 수 있다.
주소 버스 폭이 32bit인 경우

$2 ^ {32} = 4,294,967,296$byte $= 4,294,967,296 * 8$bit $= 34,359,738,368$bit
메모리가 4GB인 경우
$4$GB = $4 * 1024$MB $= 4 * 1024 * 1024$KB $= 4 * 1024 * 1024 * 1024$byte $= 4 * 1024 * 1024 * 1024 * 8$bit $= 34,359,738,368$bit
즉, 주소 버스 폭이 32bit인 경우 4GB의 메모리 주소만 할당할 수 있다.

메모리 크기가 정해진 경우 주소 폭의 크기를 알 수 있다.
메모리 크기 16384 byte
$16384$B $/ 1024 = 16$kb
주소 버스 폭
$log2(16384) = 14$bit
추가 학습
메모리 용량이 주소 버스의 폭보다 적은 경우 메모리 접근 제한, 메모리 확장 제한, 성능 제한으로 메모리를 관리할 수 있다.

 

데이터 버스 (Data Bus)

  • CPU가 메모리, I/O 장치 사이데이터를 전송하기 위한 신호 선들의 집합이다.
  • 데이터 버스는 CPU와 연결된 장치들양방향 데이터 전달이 가능하다.
  • 데이터 버스의 폭(width)한 번에 전송될 수 있는 데이터 비트 수를 결정한다.
    • 데이터 버스가 32비트라면 CPU는 메모리로부터 한 번에 32비트씩 읽을 수 있다.
  • 하드웨어 설계상 주소 버스와 데이터 버스가 동시에 사용되지 않으면 주소 버스 일부를 데이터 버스로 활용하는 경우도 있다.

 

제어 버스 (Control Bus)

  • CPU가 시스템 내 각 요소들동작을 제어하는데 사용된다.
    • 신호 선들의 수는 CPU와 시스템 구성에 따라 다르다.
  • 메모리 Read/Write, I/O Read/Write 신호와 같은 기본 제어 신호가 있다.

 

주소 버스 데이터 버스 제어 버스
단방향 (CPU > 메모리) 양방향 (CPU, 메모리, I/O) 양방향 (CPU, 메모리, I/O)
주소 값 제어 실제 데이터 제어 제어 신호 전송

 

 

 


액세스 (Access)

엑세스는 CPU가 데이터를 메모리에 Read/Write하는 동작을 말한다.

메모리는 액세스 방식에 따라 다양히 분류되지만, 이번에는 RAM을 예로 설명하겠다.

 

CPU는 메모리의 특정 데이터를 접근하기 위해 주소 버스, 데이터 버스, 제어 신호를 연결한다.

 

 

메모리 쓰기 시간 (Memory write time)

CPU가 메모리에 데이터를 쓰는 동작은 저장 주소, 저장할 데이터를 각각 주소 버스와 데이터 버스를 통해 보내며 동시에 쓰기 신호를 활성화 시킨다.

 

신호들은 모두 메모리 쓰기 동작이 완료될 때까지 유지되고 주소와 데이터를 보낸 순간부터 저장이 완료되는 시간까지를 메모리 쓰기 시간이라 한다.

 

 

메모리 읽기 시간 (Memory read time)

CPU가 메모리에 저장된 데이터를 읽고 데이터 버스를 통해 데이터를 반환하는 흐름이다.

 

이때, 데이터를 읽는 지연 시간이 발생한다. 지연시간은 주소를 해독(decode)하고 메모리에서 데이터를 인출하는 시간을 합한 시간이다.

 

데이터 읽기가 완료되면 버스 인터페이스 회로(bus interface circuit)을 통해 CPU가 데이터를 읽어 들이게 된다.

버스 인터페이스 회로(bus interface circuit)
프로세서로 전달되는 모든 신호에 응답하고 프로세서에서 시스템의 다른 부분으로 전달되는 모든 신호를 생성하는 역할을 담당한다.

 

이 일말의 과정은 CPU가 주소를 발생한 시간부터 읽기 동작이 완료될 때까지 시간이며, 메모리 읽기 시간이라 불린다.

 

동작 시간 흐름도(timing diagram)

 

 

 


CPU와 I/O 장치의 접속

CPU는 다른 장치에 직접 제어하거나 액세스하지 못한다.

다른 I/O 장치들도 별도의 인터페이스 회로(interface circuit)나 제어기(controller)를 통해 다양한 장치의 데이터를 처리하며, CPU 또한 같은 방법으로 접속되어야 한다.

  • 장치들이 너무 다양하다.
  • 장치마다 속도의 차이가 존재한다.
  • 장치마다 사용하는 data 형식의 차이가 존재한다.

 

CPU는 I/O 장치들을 직접 제어하지 않지만, 각 장치의 제어기가 수행하는 동작을 지정할 명령(command0을 보내거나 각 정보를 송수신해야한다. 이를 위해 CPU는 각 장치의 제어기를 구분하고 정보를 주고받을 수 있어야 한다.

 

그 방법은 각 제어기 내 상태 레지스터와 데이터 레지스터를 각각 한 단어 길이의 기억장치로 간주하고, 주소를 한 개씩 배정하여 CPU가 레지스터를 메모리와 같은 방법으로 읽기/쓰기 동작을 수행한다.

 

즉, CPU가 제어기 내부 레지스터들의 주소를 이용해 해당 I/O 장치를 제어한다.

 

 

키보드 사용 예시

  1. 키(key)를 입력 받는다.
  2. 8bit(ASCII 코드 7비트 + 피리티 비트) 데이터키보드 제어기로 전송된다.
  3. 데이터들이 레지스터들에 동시에 지정된 비트가 저장된다.
    1. 데이터 레지스터(data register)에 저장
      • CPU와 I/O 장비간 데이터 임시 기억장치
    2. 상태 레지스터(status register)에 저장
      • I/O 장치의 상태를 나타내는 비트들을 저장하는 레지스터
  4. CPU가 데이터 입력을 원하는 시점에서 먼저 상태 레지스터를 읽어들인다.
  5. 입력 준비 비트가 1로 세트되어 있는지 확인한다.
    • 만약, 입력 준비가 되어있다면, 즉시 데이터 레지스터의 내용을 CPU로 읽어들인다.
    • 만약, 입력 준비가 되어있지 않다면, CPU는 상태 레지스터 내용을 읽고 검사하는 동작을 반복하며 대기한다.
      • 키가 눌러져 데이터가 들어올때까지 지속된다.

 

보조저장장치 사용 예시

HDD, SSD, CD-ROM, DVD 등도 키보드와 유사한 방법으로 접속된다.

 

단, 보조저장장치들은 블록(512, 1024, 4096byte)단위로 전송이되어 제어기 내에 적어도 한 블록 이상 임시 저장 데이터 버퍼가 준비되어야한다.

 

 

컴퓨터시스템의 수행 기능들

프로그램 실행 CPU가 메모리로부터 프로그램 코드를 읽어 실행
데이터 저장 프로그램 실행 결과로 얻은 데이터를 메모리에 저장
데이터 이동 디스크, CD-ROM, HDD, SDD 등 저장되어 있는 프로그램과 데이터 블록을 메모리로 이동
데이터 입출력 I/O 장치들을 통해 보내는 명령, 데이터를 입력
CPU가 처리한 결과 값이나 메모리 내용을 출력
제어 프로그램이 순서대로 실행되도록 혹은 필요에 따라 순서를 변경하도록 조정 및 각 제어 신호 발생

 

 

 


요약

시스템 버스 (System Bus)

  • CPU와 다른 요소들의 정보 교환 통로
    • 주소 버스 (Address Bus)
      • 주소 정보를 전송하는 신호선들의 집합
    • 데이터 버스 (Data Bus)
      • 데이터를 전송하는 신호선들의 집합
    • 제어 버스 (Control Bus)
      • 시스템 요소들의 동작을 제어하는 신호선들의 집합

 

 

 


참고자료

 

[컴퓨터구조] 시스템 버스(System bus)

시스템 버스(System bus) - 컴퓨터의 구성요소를 서로 연결하고 데이터 전달을 위한 경로 - 주소 버스, 데이터 버스, 제어 버스로 구성 1) 주소 버스(Address Bus) - 메모리의 주소나 I/O Unit의 포트 번호를

dheldh77.tistory.com

 

How to find out how wide adress bus width is?

Basicly, I couldn't find anywhere where this is explained thoroughly, so I though maybe anybody would have a explanation or any direction where should I search for the answer. The question would be...

stackoverflow.com

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함