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

4.3 Bus and memory transfer

by print_soo 2024. 10. 9.

Bus

Bus라는 것은 공통 라인의 set이라고 보면된다. 즉, 여러 장치를 공유하는 통로라고 생각하면된다. 

Bus는 복수개의 레지스터의 데이터 전송을 효율적으로 나타내기 위해서 사용한다.

 

예를 들어, 컴퓨터 안에서 CPU, RAM 등 다른 장치들이 서로 데이터를 주고받을 떄, 각각의 장치가 따로따로 연결되어 있으면 매우 복잡해진다. 그래서 여러 장치들을 하나의 Bus를 사용해서 데이터를 주고 받는다. 이렇게 Bus는 일종의 공유하는 도로 같은 역할을 하며, 이 도로를 통해서 다양한 장치들이 데이터를 동시에 주고 받을 수 있다. 

 

 

Bus의 회로도(Mux)

 

 

  S1 S0 MUX 0(f) MUX 1(f) MUX 2(f) MUX 3(f) Register
1 0 0 A0 A1 A2 A3 A
2 0 1 B0 B1 B2 B3 B
3 1 0 C0 C1 C2 C3 C
4 1 1 D0 D1 D2 D3 D

 

 

 

 

 

이런식으로 S1, S0에 따라서 Register를 선택할 수 있다. 

 

 

 

 

위의 회로는 실제 Bus를 적용한 회로이다. 오른쪽 위에 있는 S2, S1, S0를 이용해서 레지스터를 읽어온다.

예를 들어 0 0 1 인경우 1에 연결된 AR을 가져오고 0 1 0인 경우 2에 연결된 PC를 가져올 수 있다.

 


 

Three-state buffer

 

 

 

three - state buffer는 말 그대로 상태가 총 3개인 버퍼이다. 기존의 버퍼는 입력이 1이 들어가면 출력이 1이 나오는 구조로 총 2개의 상태가 있는데 여기서 C(control input)이 추가되어 C가 0이면 끊어진 상태로 된다. 따라서 0, 1, Disconnect의 3개의 state가 나온다.

 

 

 

Bus를 Mux말고 three-state buffer와 2x4 Decoder를 이용해서 구현할 수도 있다.

 

 

 

S1 S0 D0 D1 D2 D3 F
0 0 0 0 0 1 A0
0 1 0 0 1 0 B0
1 0 0 1 0 0 C0
1 1 1 0 0 0 D0

 

 

위의 표처럼 S1, S0에 따라서 D가 0이면 나어지는 다 끊어진 상태가 되고 연결된 하나만 출력된다.


 

Memory transfer

 

 

 

Address Register

: 메모리 장치가 주소를 받을 때 사용하는 레지스터이다. 즉, AR은 메모리에 접근할 때 필요한 주소를 저장하는 역할을 한다.

 

 

0. 항상 AR의 주소는 Memery가 참조한다.

 

1. Read를 1로 만든다.

 

2. bus의 값을 7을 만들어 Memory 값을 읽어온다.

 

3. DR의 Load에 1을 넣어준다.

 

4. 이렇게 되면, bus에는 메모리 값이 돌아다니다가, Load가 1이 되면 Memory의 값이 DR로 전달된다.

 

 


 

 

Data Register

: 데이터가 전송되는 레지스터이다. 메모리에서 읽거나 쓰는 데이터는 이 DR을 통해 이동한다. 메모리로부터 읽어온 데이터를 저장하거나, 메모리로 보낼 데이터를 일시적으로 보관하는 역할을 한다.

 

 

 

 

 

0. 항상 AR의 주소는 Memery가 참조한다.

 

1. bus의 값을 3을 만들어 DR(R1) 값을 읽어온다.



2. bus DR의 값이 돌아다닌다.

 

3. Write를 1로 만든다.

 

4. 이렇게 되면, DR의 값이 bus를 돌아다니다가 Write가 1이 되면 Memory에 전달된다.

'2학년 2학기 > 컴퓨터 구조' 카테고리의 다른 글

4.5 Logic micro-operations  (1) 2024.10.09
4.4 Arithmetic micro-operations(산술 마이크로 - 연산)  (1) 2024.10.09
4.2 Register transfer  (1) 2024.10.09
4.1 Register transfer language  (1) 2024.10.09
3.6 Error detecting code  (1) 2024.10.06