CPU에 대해 학습하면서, 어셈블리어의 LOAD & STORE 명령어에 대해 학습하고 있었다.
그러던 도중 문득 궁금한 점이 생겼는데
LOAD,STORE는 결국에CPU와 MEMORY가 통신을 하는 개념이라고 생각!그렇다면, 우리가 웹에서 통신을 할 떄에는
Web Socket과 같은 통신 수단으로 통신을 하는데,CPU-MEMORY사이에서는 어떠한 수단으로 데이터들을 주고받는 것인지 궁금하게 되었다.
In computer architecture, a bus[1] (historically also called data highway[2] or databus) is a communication system that transfers data between components inside a computer, or between computers.
위 설명에서 볼 수 있듯이, 컴퓨터 구조에서 bus란 일종의 Communication System이라고 볼 수 있다.
그 목적은, between components inside a computer 즉 컴퓨터안에 있는 2개의 다른 요소들끼리 혹은 between computers 컴퓨터 끼리 데이터를 전달해준다는 것이다.
이러한 설명을 통해 CPU 라는 component와 Memory라는 component가 Bus를 통해 data를 주고받을 수 있다! 는 것을 알 수 있었다.
이제 Bus에 대한 개념을 알았으니, Bus 라는 용어 보다는 CPU, 메모리, 입출력 장치 간의 데이터 전송을 위한 주요 통신 경로를 지칭하는 포괄적인 용어인
System Bus를 사용하도록 하자.
A system bus is a single computer bus that connects the major components of a computer system, combining the functions of a data bus to carry information, an address bus to determine where it should be sent or read from, and a control bus to determine its operation.
위 설명을 보면 알 수 있듯이, 크게 3가지로 나뉠 수 있다.
1) data bus : 데이터가 들어있는 버스
2) address bus : 어디로 보낼 지, 어디서부터 읽을 지
3) control bus : 어떤 제어 신호를 전달할 지
이제 각 Bus들이 어떻게 동작하고, 어떤 역할들을 하는 지 알았으니 실제
CPU - MEMORY - I/O Unit에서 어떻게 동작하는 지 살펴보자
LOAD,STORE명령에 의해 수행된다.
1) LOAD
주소 버스 : 메모리에서 불러올 데이터가 저장된 주소값이 전달(CPU ➡️ Memory)
신호 버스 : Memory Read 신호 전달(CPU ➡️ Memory)
데이터 버스 : 지정한 메모리에 저장된 값 전달(Memory ➡️ CPU)
(2) STORE
주소 버스 : 메모리에서 해당 데이터를 저장할 주소값 전달(CPU ➡️ Memory)
신호 버스 : Memory Write 신호 전달(CPU ➡️ Memory)
데이터 버스 : 저장할 데이터 전달(CPU ➡️ Memory)
입력(Input)과 출력(Output)명령에 의해 수행
1) 입력(Input)
주소 버스 : 해당 입출력 장치의 포트 번호 전달(CPU ➡️ I/O Unit)
신호 버스 : I/O Read(input) 신호 전달(CPU ➡️ I/O Unit)
데이터 버스 : 해당 입출력 장치는 데이터 전달(I/O Unit ➡️ CPU)
2) 출력(Output)
주소 버스 : 해당 입출력 장치의 포트 번호 전달(CPU ➡️ I/O Unit)
신호 버스 : I/O Write(output) 신호 전달(CPU ➡️ I/O Unit)
데이터 버스 : 입출력 장치에 데이터 전달(CPU ➡️ I/O Unit)
3) 인터럽트(Inputerrupt)
입출력장치는 제어신호를 통해 인터럽트 요청을 보내 CPU에 입출력작업을 요청할 수 있다!
인터럽트 요청 : 입출력 준비를 마친 I/O Unit이 CPU에 입출력작업의 시작 요청
인터럽트 확인 : CPU가 입추력 동작을 수행할 것을 입출력장치에 통보
입출력장치와 메모리의 통신은 CPU를 이용하지 않는다.
직접 기억장치 액세스 방식(DMA, Direct Memory Access)으로 통신!