[CS스터디] 프로세서와 계산기의 다른 점

G-NOTE·2022년 7월 21일
0

항해99

목록 보기
14/36

프로세서와 연산

프로세서에는 수행할 수 있는 기본 연산들의 레퍼토리가 있다.
산술 연산을 할 수 있기 때문에 계산기처럼 작동할 수 있고, 메모리에서 연산을 수행할 데이터를 가져오거나 연산 결과를 메모리에 저장할 수 있다.(계산기의 메모리 기능과 유사)
뿐만 아니라 버스로 전송되는 신호를 통해 마우스, 키보드, 디스플레이 기타 전기적으로 연결된 모든 장치에 대한 입출력을 조직화하고 조정하기도 한다.

프로세서와 계산기가 다른 점은 프로세서는 '결정할 수 있다'는 것이다.
수나 다른 종류의 데이터에 대해 대소관계나 일치 여부를 비교할 수 있고, 그 결과에 따른 다음 일을 결정할 수 있다.

"기계는 특성상 완전히 자동이 되어야 한다. 즉, 계산이 시작한 후에는 운영자에 독립적이어야 한다."
폰 노이만

프로세서는 이처럼 현재 처리 중인 데이터를 기반으로 다음에 무슨 일을 할지 결정할 수 있기 때문에 스스로 전체 시스템을 운영할 수 있다.

프로세서(CPU)의 역할 수행

  1. 연산 장치 : (ALU, Arithmetic and Logic Unit) 산술연산 및 논리연산(논리곱/합 등)을 수행한다. 이 때문에 프로세서를 산술논리연산장치라고도 한다. 연산에 필요한 데이터는 레지스터에서 가져오고, 연산이 끝나면 다시 레지스터로 반환한다.

  2. 제어 장치: 프로세서는 명령어가 순서대로 실행될 수 있도록 제어한다. 명령어를 꺼내서 해독하고 명령어 실행에 필요한 신호들을 각종 장치로 보낸 뒤, 그 다음에 처리할 신호나 동작을 결정한다.

    • 제어장치가 처리하는 명령어는 연산 코드(수행할 연산 지정) + 기억장치의 주소(해당 연산을 수행할 데이터가 저장된 주소)로 이루어져 있다.

명령어 사이클
명령어 사이클 : 프로세서(CPU)가 프로그램을 실행하기 위해 주기억장치에서 명령어를 가져오고 해독하고 실행하는 것을 반복하는 과정
1. 명령어 인출: 주기억장치에서 필요한 명령어를 순차적으로 가져옴
2. 명령어 해독: 호출된 명령어 해석
3. 명령어 실행: 해석된 명령어를 산술/논리 연산장치를 통해 실행
4. 저장: 수행결과를 주기억장치에 저장
(반복)

프로세서(CPU)의 동작 과정
1. 처리해야 할 데이터를 주기억장치(RAM)에서 불러와 제어장치 안의 레지스터에 전달한다.
2. 제어장치는 연산 코드를 해석하고 무슨 연산을 해야 하는지 결정해서 연산장치에 전달한다.
3. 연산장치가 해당 연산을 진행하고 결과를 누산기에 저장한다.
4. 연산 결과를 외부 시스템 버스를 통해 다시 RAM으로 전송한다.

프로세서 레지스터 (processor register)
컴퓨터의 프로세서 내에서 자료를 보관하는 아주 빠른 기억 저장소. 일반적으로 현재 계산을 수행중인 값을 저장하는 데 사용된다. 보통 주기억장치에서 레지스터로 데이터를 옮겨와 데이터를 처리한 후 그 내용을 다시 주기억장치로 저장한다. (로드-스토어 설계)

모형 컴퓨터로 더하기 프로그램 만들기

모형컴퓨터 : 이론상의 설게를 모방하여 작동하는 프로그램

  • 명령어와 데이터를 저장하기 위한 메모리
  • 한 개의 수를 담을 만한 용량의 부가적인 저장 영역인 누산기
  • 명령어
    • GET : 키보드에서 수를 입력받은 후 누산기에 넣는다.
    • PRINT : 누산기의 내용을 출력한다.
    • STORE M : 누산기 내용의 복사본을 메모리 위치 M에 저장한다.
    • LOAD M : 메모리 위 M의 내용을 누산기에 적재한다.
    • ADD M : 메모리 위치 M의 내용을 누산기 내용에 더한다.
    • STOP : 실행 중지
  • 작동을 시작하면 프로세서는 인출, 해석, 실행 의 단순한 사이클을 반복한다.

첫 번째 모형 프로그램

GET
PRINT
STOP
  1. 사용자에게 수를 입력하도록 요청
  2. 해당 수를 출력
  3. 프로세서에 중지하라고 명령

두 번째 모형 프로그램

  GET | 첫 번째 수를 입력받아 누산기에 넣는다.
  STORE FirstNum | FirstNum이라는 메모리 위치에 첫 번쨰 수를 저장
  GET | 두 번째 수를 입력받아 누산기에 넣는다.
  ADD FirstNum | 첫 번째 수를 누산기에 있는 값에 더한다
  PRINT | 결과 합계 값을 출력한다.
  STOP | 프로그램 실행을 중지한다.
FirstNum: | 첫 번째 입력 수를 담을 메모리 위치_
  • 프로그램이 수정되면 데이터의 위치가 바뀔 수 있기 때문에 고정된 번호 대신 데이터 위치에 이름을 부여한다.

분기 명령어

  • 프로세서가 프로그램의 앞부분으로 돌아가서 명령어 처리를 반복하도록 가능
  • 루프를 멈추기 위해 다른 종류의 명령어가 필요한다. 조건을 검사하여 다음에 수행할 작업을 결정하는 명령어를 조건부 분기, 조건부 점프라고 한다.
Top : GET | 수를 입력받아 누산기에 넣는다
      IFZERO Bot | 누산기 값이 0이면 Bot 레이블이 붙은 명령어로 이동
      PRINT | 누산기 값이 0이 아니므로 그 값을 출력
      GOTO Top | Top으로 돌아가서 다른 수를 입력 받음
Bot : STOP
  • 명령어 레퍼토리에 IFZERO가 추가된 모형 프로세서는 이론상으로는 말 그대로 어떠한 계산이든 수행할 수 있도록 프로그래밍 될 수 있다.

참조

1일 1로그 100일 완성 IT 지식 (저자 : 브라이언 W.커니핸)
https://foxtrotin.tistory.com/144
https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%84%9C_%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0

profile
FE Developer

0개의 댓글