본문 바로가기
컴퓨터/컴퓨터구조

System Bus(Data Bus, Address Bus, Control Bus)와 관계

by 우유식빵 2021. 4. 12.

Data Bus

- 시스템 모듈 사이에 데이터가 이동하기 위한 길을 제공해줌

- 32~512과 같이 여러개의 Line으로 이루어져있고 각 라인의 수는 Databus의 Width(32~512bits)를 의미한다.

- 이는 한번에 얼마나 많은 bits를 이동시킬수 있는가이다(capacity).

- 시스템의 전반적인 성능을 결정하는 요소이다.

 

- 보편적으로 word의 너비이다.

- 한 사이클에 얼마나 많은 데이터를 전송할 수 있는 지를 결정한다.

- Memory에서 데이터를 전송하거나 전달 받는다.

 

Address Bus

- Data Bus의 데이터가 어디서 또는 어디로 이동해야하는지 결정한다.

- CPU/Memory사이의 주소값 전달

- Width는 시스템의 최대 허용 메모리 용량을 결정한다.

- I/O port의 주소값을 얻기 위해서도 사용한다.

 

- Memory에는 많은 location(address)이 있고 각각 보편적으로 8 bits 너비를 가지고있다.

 

Control Bus

- 보통 1bit 너비를 가지고 있다.

- CPU가 Memory를 Read할지 Write할지 정보만을 가지고 있다.

 

 

 

출처: phatcode.net

그래서 위 세 개의 버스로 값을 쓰는 방식에 대해서 간단한 예를 보자면

숫자 20을 메모리 주소 5에다가 저장을 하고 싶다면

먼저 address bus에 5를 넣고 control bus에는 write을 넣은 다음에 data bus에는 20을 넣으면 된다.

 

 

 

문제를 풀어보자면.. 

32-bit microprocessor가 32-bit instructions를 가지고 있다.

(8bit opcode와 24bit의 immediate operand or operand address)

 

 

1. 32-bit local address bus와 16-bit local data bus 일 때

CPU는 32-bit instruction을 읽고 operand를 가져오기위해 address를 읽는다.

instruction에서 address의 최대 길이는 24-bit였다.

 

그러므로 32-bit local address bus를 이용해서 메모리에 주소값을 한 번에 전달할 수 있다.

 

메모리에서 CPU는 다음 명령어를 읽어오는데 32-bit instruction이었으므로 총 32bit를 전달받아야한다. 

 

근데 16-bit data bus를 사용하므로 32bit instruction을 읽어오는데 2 cycle이 필요하다

 

 

 

2. 16-bit local address bus와 16-bit local data bus 일 때

CPU는 32-bit instruction을 읽고 operand를 가져오기위해 operand의 address를 읽는다. 

 

그러고는 그 주소값을 address bus에 적재하고 memory로부터 참조하려고하는데

최대 address의 길이가 24bit인 반면 address bus의 width가 16bit라서 한번에 못가져온다.

 

 

그래서 뭐 다른 방식을 통해서 주소를 받아오고

(메모리가 row&column으로 되어있으니까 처음 주소 받아오는 방식은 row에 접근 할 주소,

다음 주소는 column에 접근 할 주소를 받아온다든지..)

 

메모리에 접근해서 operand(data)를 가져온다. 

 

 

또 메모리에서 Instruction을 가져오기도 해야하는데 32-bit instruction에 data bus의 width가 16bit이므로

위의 경우처럼 또 가져올 때도 2 cycle이 필요하다. 

 

참고:www.quora.com/What-is-the-relation-between-a-data-bus-and-an-address-bus-1

댓글