processor, main memory, I/O moudles, System Bus
컴퓨터와 외부 환경사이에서 데이터가 다음과 같은 상황에서 움직인다.
1. Storage(스토리지) EX) 하드드라이브,ssd
2. 통신장비(Communications Equipment)
3. 터미널
-> 컴퓨터 명령 후 메인메모리로 외부 입력들을 옮겨 오도록 한다.
위 세가지 요소를 연결하는 통로이다.
PC: 다음 실행할 명령어의 주소를 가지고 있는 레지스터로, CPU가 현재 어디까지 실행을 완료하였고, 다음으로 실행해야 할 명령어가 무엇인지를 저장한다.
IR: 현재 실행 중인 명령어를 저장하는 레지스터로, 메모리에서 읽어온 명령어가 저장되어 있으며,CPU가 이를 시랭하는 동안 분석하고 해독한다.
MAR: 메모리에서 데이터를 읽거나 쓸 주소를 저장하는 레지스터로, CPU가 메모리에서 데이터를 읽거나 쓰려명 해당 데이터가 저장된 주로를 알야아하는데 MAR은 이러한 주소를 저장한다.
MBR: 메모리에서 읽은 데이터나 쓰려는 데이터를 저장하는 레지스터로, CPU가 데이터를 읽거나 쓸때의 데이터가 MBR에 저장된다.
I/O AR: 입출력 장치와 통신하기 위해 사용되는 레지스터로, CPU가 입출력 장치에서 어떤 작업을 요청하기 위해 해당 장치의 주소를 I/O AR에 저장한다.
I/O BR: 입출력 장치와 데이터를 주고받기위해 사용되는 레지스터로,CPU와 입출력 장치 간의 데이터를 I/O BR에 저장한다.
레지스터는 CPU 내부에 존재하며 매우 빠른 속도로 액세스할 수 있으나 메모리는 CPU와 더 멀리 떨어져 있어 상대적으로 느린 속도로 액세스 된다. 또한 레지스터는 CPU 내부에만 존재하며 상대적으로 작은 용량을 가지고 있으나 메모리는 CPU 외부에 존재하며 대용량 데이터를 저장할 수 있다. 가격 면에서 레지스터가 비싸고 메모리는 저렴하다. 레지스터는 직접 액세스가 가능하며 CPU에서 직접 참조하며 사용되지만 메모리는 주소를 통해서 갑적적으로 액세스한다.
명령어를 메모리에서 읽어오는 단계로 컴퓨터의 명령어 실행 사이클 중 첫 번째 단계이며, CPU가 다음으로 실행할 명령어의 위치를 결정하고 해당 명령어를 메모리에서 읽어온다.
fetch stage는 CPU의 성능을 결정하는 데 중요한 역할을 합니다. 명령어를 메모리에서 가져오는 데 소요되는 시간이 CPU 성능에 직접적으로 영향을 미치기 때문입니다. 따라서, fetch stage는 최적화가 필요한 중요한 단계입니다.
CPU가 명령어를 실행하는 단계를 의미한다. Execute Stage는 CPU의 명령어 실행 사이클 중 두 번째 단계이며, Fetch Stage에서 가져온 명령어를 분석하고 해당 명령어에 따라 작업을 수행한다.
Execute Stage는 명려어의 유형에 따라 다양한 방식으로 동작할 수 있다. 예를 들어 , 산술 연산을 수행하는 경우 ALU를 사용하여 두 개의 데이터를 계산하고 결과를 레지스터에 저장한다. 또는 데이터를 메모리에 저장하거나 메모리에서 읽어올 수도 있다. 조건분기나 루프 처리를 수행하는 경우에는 CPU가 해당 명령어에 따라 PC 값을 변경하여 실행 흐름을 제어한다.
Execute Stage에서 수행되는 작업은 CPU의 구조와 명령어 세트에 따라 다르다. 명령어의 복잡도와 CPU의 성능에 따라 속도는 상이할 수 있으며 실행시간이 가장 긴 단계중 하나로 성능 최적화를 위해서는 Execute Stage를 잘 최적화해야 합니다.
Step 1
PC 레지스터에 300이라는 숫자가 있는데 이는 메모리 주소를 의미한다. 메모리에 300번 주소에 있는 1940 명령어를 읽어와 IR에 로드한다.
Step 2
이때 1940에서 first 4 bits, 즉 1이 partial list of opcodes 0001명령어를 수행하여 940 주소에있는 0003을 AC에 로드한다.(1이 코드 940은 주소)
이후 PC는 증분된다.
Step 3
증분된 301이라는 메모리 주소에서 5941 명령어를 읽어와 IR에 로드한다.
Step 4
5941에서 5를 이진수로 고치면 partial list of opcodes 0101로 941주소인 메모리에 있는 0002를 AC에 더한다.그래서 0005가 되며 이후 PC는 증분된다.
Step5
증분된 302라는 메모리 주소에서 2941 명령어를 읽어와 IR에 로드한다.
Step6
2941에서 2를 이진수로 고치면 partial list of opcodes0010으로 941주소인 메모리에 0005가 저장된AC 값을 941에 저장한다.