1일 1로그 100일 완성 IT지식 - HARDWARE 12, 13
프로세서와 계산기의 다른 점
프로세서의 작동원리 무엇을, 어떻게 처리할까? |
프로세서에는 수행할 수 있는 기본 연산들의 레퍼토리가 있다.
산술 연산이 가능하며 메모리에서 연산할 데이터를 가져오거나, 결과를 메모에 저장하는 것이 가능하다.
계산기의 그것과 유사하다.
버스로의 신호를 바탕으로 마우스, 키보드, 디스플레이 등 전기적으로 연결된 모든 장치에 대해
입출력을 조직화, 조정하기도 한다.
프로세서와 계산기의 가장 큰 차별점은 "프로세서는 자체 결정, 판단이 가능하다는 점이다." 계산기는 사람의 개입을만 작동하는 반면, 프로세서는 스스로 운영이 가능하다. |
모형 컴퓨터로 더하기 프로그램 만들기
프로세서의 원리 설명을 위한
모형 컴퓨터에는 명령어와 데이터 저장을 위한 메모리 존재, 부가적인 저장영역 누산기(accumulator) 존재
누산기 - 일종의 계산기에서의 디스플레이
모형컴퓨터에는 기본 연산 수행을 위한 약 10개의 명령어 레파토리가 있음
GET | 키보드에서 수를 입력받은 누산기에 넣는다(누산기의 기존 내용을 덮어 쓴다). |
누산기의 내용을 출력한다(누산기의 내용은 변하지 않는다). | |
STORE M | 누산기 내용의 복사본을 메모리 위치 M에 저장한다(누산기의 내용은 변하지 않는다). |
LOAD M | 메모리 위치 M의 내용을 누산기에 적재한다(M의 내용은 변하지 않는다). |
ADD M | 메모리 위치 M의 내용을 누산기의 내용에 더한다(M의 내용은 변하지 않는다). |
STOP | 실행을 중지한다. |
각 메모리 위치에는 한 개의 수 혹은 한 개의 명령어가 담겨 있어 프로그램은 메모리에 저장된 일련의 명령어와 데이터 항목으로 구성.
작동을 시작하면 프로세서는 첫 번째 메모리 위치에서 시작하여 아래의 단순 사이클 반복
- 인출(Fetch) : 메모리에서 다음 명령어를 가져온다.
- 해석(Decode) : 명령어가 무슨 일을 하는지 알아낸다.
- 실행(Execute) : 명령어를 실행한다. 인출 단계로 되돌아간다.
첫번째 모형 프로그램
모형 컴퓨터를 위한 프로그램을 만들려면 원하는 작업을 수행할 일련의 명령어를 작성하고 메모리에 넣은 후, 프로세서에 그 명령어들을 실행하라고 지시해야함
메모리가 다음 명령어들을 정확히 담고 있다면 이 명령어들은 메모리에 이진수로 저장될 것
사용자가 123이라는 수를 입력하여 왼쪽 박스의 GET, PRINT, STOP을 넣고 RUN 버튼을 누르면 GET 명령어가 실행되며 다음과 같이 출력된다.
두 번째 모형 프로그램
첫 번째 모형 프로그램에서 새로운 기능 추가
메모리에 값을 저장한 후 그 값을 가져오는 기능
GET | 첫 번째 수를 입력받아 누산기에 넣는다.
STORE FirstNum | FirstNum이라는 메모리 위치에 첫 번쨰 수를 저장
GET | 두 번째 수를 입력받아 누산기에 넣는다.
ADD FirstNum | 첫 번째 수를 누산기에 있는 값에 더한다
PRINT | 결과 합계 값을 출력한다.
STOP | 프로그램 실행을 중지한다.
FirstNum: | 첫 번째 입력 수를 담을 메모리 위치
프로그램이 수정되면 데이터의 위치가 바뀔 수 있기 때문에 고정된 번호 대신 데이터 위치에 이름을 부여한다.
분기 명령어
프로세서가 프로그램의 앞부분으로 돌아가서 명령어 처리를 반복하도록 가능
루프를 멈추기 위해 다른 종류의 명령어가 필요한다. 조건을 검사하여 다음에 수행할 작업을 결정하는 명령어를 조건부 분기, 조건부 점프라고 한다.
Top : GET | 수를 입력받아 누산기에 넣는다
IFZERO Bot | 누산기 값이 0이면 Bot 레이블이 붙은 명령어로 이동
PRINT | 누산기 값이 0이 아니므로 그 값을 출력
GOTO Top | Top으로 돌아가서 다른 수를 입력 받음
Bot : STOP
명령어 레퍼토리에 IFZERO가 추가된 모형 프로세서는 이론상으로는 말 그대로 어떠한 계산이든 수행할 수 있도록 프로그래밍 될 수 있다.
public class Main{
public static void main(String[] args){
int sum = 0;
for(int i = 0; i < 10; i++){
sum += i+1;
}
return sum;
}
출처/참고
'🖥CS' 카테고리의 다른 글
TCP/UDP (0) | 2022.09.27 |
---|---|
1일 1로그 100일 완성 IT지식 - 통신 75~77 (0) | 2022.08.21 |
자바스크립트/파이썬은 어떻게 작동할까? (0) | 2022.08.12 |
1일 1로그 100일 완성 IT지식 - SOFTWARE 27 (0) | 2022.07.31 |
Spring 이해를 위한 기본 지식 (0) | 2022.07.25 |