현대 컴퓨터 기본 구조

Vorhandenheit ·2022년 2월 15일
0

Computer Science

목록 보기
3/6
post-custom-banner

현대 컴퓨터 기본 구조

폰 노이만이 컴퓨터 구조를 제안하기 전에는 애니악(ENIAC)이라는 컴퓨터가 주로 이용했습니다. 이 애니악은 계산 할 때마다 손으로 직접 진공간의 회로 스위치를 다시 조저앟여 새입력을 처리하는 하드웨어 프로그램 방식이었습니다.

폰 노이만이 '프로그램 내장 방식 컴퓨터'를 최초로 제안해서, 7년 후 에드삭(EDSAC)이 제작되었고 현재까지 컴퓨터들이 이 폰 노이만 구조를 따르고 있습니다.

1. 폰 노이만 모델

  • 메모리(Memory) : 데이터 혹은 프로그램의 코드가 저장되는 부분입니다.

    • MAR(Memory Address Register) : 접근하고자 하는 메모리 location의 주소를 임시로 저장하는 레지스터리 입니다.
    • MDR(Memory Data Register) : 메모리로부터 읽힌 데이터 혹은 메모리에 쓰고자 하는 데이터를 임시로 저장하는 레지스터리 입니다.
  • 처리 장치(Process Unit) : 실제로 데이터에 대한 연산을 처리하는 부분이고 CPU를 구성하는 한 부분입니다.

    • ALU (Arithmetic Logic Unit) : 입력된 데이터에 대한 연산을 수행합니다
    • TEMP : 연산 중간 결과물을 담는 장소입니다.
  • 컨트롤 유닛(Control Unit) : 프로그램 코드에 해당하는 명령어를 읽고 해석하여 지시된 명령을 수행하는 과정 전반에서 지휘자 역할을 담당하는 부분입니다. 명령어 해석 및 수행 과정 전반을 통제하는 유한 상태 기계가 존재합니다.

    • PC(Program Counter) : 메모리 location 주소를 저장합니다.
    • IR(Instruction Register) : 현재 읽어들여 실행중인 명령어를 저장합니다.
  • 입력 장치(Input) : 키보드, 마우스, 스캐너 등과 같이 메모리 외부에서 원하는 데이터를 메모리 내부에 입력하기 위한 장치를 의미합니다. 또한 하드 디스크와 같은 저장 장치도 메모리가 데이터를 읽어올 수 있으므로 입력장치에 속합니다.

  • 출력 장치(Output) : 모니터, 프린터, LED 등과 같이 메모리 내부에 존재하는 데이터를 메모리 외부에 출력하기 위한 장치를 의미합니다.

(1) 메모리 (Memory)

메모리는 MAR, MDR을 가지고 있습니다.
CPU가 메모리로부터 특정 데이터를 읽기 위해서는
1. 읽고자 하는 데이터의 메모리 주소를 MAR에 저장하고
2. 해당 메모리 주소에서 읽힌 데이터는 MDR에 저장됩니다.
3. MDR에 저장되어있는 데이터를 읽어옵니다.

CPU가 메모리로 특정 데이터를 쓰기 위해서는
1. 쓰고자 하는 데이터를 MDR에 저장합니다.
2. 데이터를 쓰고자 하는 메모리 주소를 MAR에 저장합니다.
3. 쓰기가 가능하도록 메모리에 WE 신호를 입력합니다.

(2) 처리 장치 (Processing Unit)

처리장치는 연산을 실제로 수행하는 ALU와 결과물을 임시로 저장하는 TEMP로 나누어집니다.

(3) 입력 및 출력 장치 (Input and Output)

입출력 장치는 메모리와 데이터를 주고받는 외부 장치를 의미합니다. 입출력 장치가 메모리와 데이터를 교환할 때는 중간에 CPU를 거치는데, 이를 위해서 해당 입출력 장치가 CPU와 통신하기 위한 인터페이스로서 레지스터를 가지고 있어야합니다.

(4) 컨트롤 유닛 (Control Unit)

프로그램 코드에 해당하는 명령어들을 읽고 해석해서 원하는 동작을 수행하는 과정 전반을 통제하는 부분입니다.

명령어

명령어는 세가지로 나누어 볼 수 있습니다.

    1. '계산'을 위한 명령어
      ADD, AND등의 명령어가 이에 해당됩니다.
    1. '데이터 이동'을 위한 명령어
      메모리로부터 데이터를 읽어오는 LD 명령어나 메모리에 데이터를 쓰는 ST 명령이 이에 해당합니다.
    1. '흐름 제어'를 위한 명령어
      일반적으로 순차적으로 실행되는 명령어 흐름을 바꾸고 다른 명령어로 점프하고 싶은 경우에 사용하는 JMP, BRnz 명령어가 이에 해당됩니다

명령어 처리 절차 (Instruction Processing)

  • FETCH
    메모리에 저장된 명령어를 읽어오는 과정입니다. PC에 저장된 메모리 주소를 MAR에 저장하여 명령어를 MDR로 읽어 들이고, MDR에 저장된 명령어를 IR로 옮기면 됩니다. 그리고 PC의 값을 1만큼 증가시켜서 다음 FETCH를 수행할 때는 다음에 위치한 명령어를 읽을 수 있게 합니다.

  • DECODE
    명령어가 어떤 종류의 명령인지 파악하는 과정입니다. 명령어의 opcode에 해당하는 부분을 CPU 내 Decoder에 입력하여 어떤 명령인지 파악하고, 그것에 따라 opcode를 제외한 나머지 비트를 해석하는 방법을 결정하게 됩니다.

  • EVALUATE ADDRESS
    명령어가 필요로 하는 데이터가 메모리에 위치한 경우, 그 데이터가 위치한 메모리 공간의 주소를 계산해내는 과정을 의미합니다.

  • FETCH OPERANDS
    명령어 실행에 필요한 데이터를 가져오는 과정입니다. 어떤 명령어는 메모리에서 데이터를 가져올 수도 있고, 어떤 명령어는 레지스터에서 데이터를 가져올수도 있습니다.

  • STORE RESULT
    연산 결과를 레지스터 혹은 메모리에 쓰는 과정입니다. 메모리에 쓰는 과정의 경우에는, 먼저 쓰고자 하는 데이터를 MDR에 저장하고 데이터를 쓸 위치를 MAR에 저장한 뒤 마지막으로 WE 신호를 활성화시켜줄 것입니다.

단점

메모리와 CPU를 이어주는 통로를 BUS라 칭하는데, 이 통로가 하나이기 때문에 폰 노이만 구조는 순차적으로 정보를 처리함으로 고속 병렬처리에는 부적합합니다. 이러한 문제를 폰 노이만 병목 현상이라고 합니다.

출처

https://it-eldorado.tistory.com/20?category=751089
https://m.blog.naver.com/with_msip/221981730449

profile
읽고 기록하고 고민하고 사용하고 개발하자!
post-custom-banner

0개의 댓글