반응형
개발을 하면서 많은 지식을 알아야하지만 CPU, 프로세서, 쓰레드등등 다양한 용어를 듣지만 제대로된 이해를 하지 못하고 그저 머리로만 상상하여서 컴퓨터에게 명령을 내었지만 제대로된 의미와 단어에대한 정리 그리고 그 구조에대해 정리하였다.
먼저 우리는 컴퓨터의 두뇌라고 불리는 CPU(Central Processing Unit)을 프로세서라고 표현하기도한다.
프로세서 간략설명
중앙처리장치라고 표현하는 CPU는 명령어를 수행하고 데이터를 처리하는 장치인데 연산장치, 제어장치,레지스터 등으로 구성이 되어있다.
- 16비트, 32비트, 64비트 이런형식의 비트표기는 흔히 보이는데 비트가 클수록 성능이 좋다고 생각하면된다.
- 프로세서의 구성은 아래 그림과같이 구성된다.
프로세스의 구성
- 연산장치(ALU)
- 연산장치는 자료를 처리하고 계산하는 장치이다.
- 산술연산 즉 사칙연산(+,-,*,/)을 처리한다.
- 논리연산 ( OR, AND, NOT)을처리한다.
- 제어장치
- 프로그램에 의해 주어지는 연산의 순서를 차례대로 실행한다.
- 기억장치와 연산장치, 입출력 장치에서 제어 신호를 발생한다.
- 이들 장치로부터 신호를 받아서 다음에 처리할 작업들을 제어한다.
- 레지스터(Register)
- 실행의 중간 결과나 적은 양의 자료를 임시로 저장하는 중앙처리 장치내에서 임시 기억장치를 말한다.
- 데이터의 접근속도가 매우빠른 작은 수의 메모리 회로
- 범용 레지스터와 특수 레지스터가 있다.
프로세서는 다양한 곳에 사용되는데
- 3차원 그래픽 가속기 프로세서
- 비디오 코덱 프로세서
- 미디어 프로세서 - 음악 플레이
- 통신용 프로세서
- 일반제품용 칩과 주문형반도체(ASIC : Application Specific Integated Circuit)
또한 프로세서는 설계 방식에따라서 2가지로 분류되는데
프로세서 구분
- CISC(Complex Instruction Set Computer)
- 복잡하고 기능이 많은 명령어로 구성된 프로세서를 말한다.
- 피요한 모든 명령어의 세트를 갖도록 설계해야한다.
- 복합적인 명령을 가짐으로서 하위 호환성을 확보하계 구성한다.
- 트랜지스터의 집적에있어서 효율성이 상대적으로 낮다
- 전력소모량이 크며, 속도는 느린데 가격이 비싸다
- 386, 486, 펜티엄등 PC에서 사용되는 CPU에 사용된다.
- RISC(Reduced Instruction Set Computer)
- CPU의 명령어를 최소화하여서 단순하게 제작한 프로세서
- 하드웨어가 간단한 대신에 소프트웨어는 복잡하다
- 하위 호환성이 상대적으로 부족하다
- 전력 소모가 적고 속도가 빠른데 가격이 저렴하다
- 멀티태스킹 기능이 가능하다
- 모토롤라, 매킨토시, 서버나 워크스테이션에서 주로 사용된다.
프로그램의 실행과 명령어 처리가 주 업무인데 명령어가 입력되었을 때의 처리방식은 아래와 같다.
명령어 처리과정
- 컴퓨터는 주 기억 장치에 기억되어 있는 명령어를 호출하는 패치과정을 수행하고 해독한다.
- 해독된 결과에 따라서 자료를 이동하고 연산,입출력을 실행하는 방식이다.
- 호출(Fatch) 사이클
- 레지스터 PC에서 저장되어 있는 값에 해당하는 주 기억장치로 가서 데이터를 복사해서 레지스터 PC에 저장한다.
- 명령어가 "JUMP" 경우, PC는 새로운 값
- 해석(Decode) 사이클
- 레지스터 IR로 가져온 기계어 비트열을 해석한다
- 연산자의 유형에 따라 피연산자 필드를 적절히 나눈다.
- 실행(Execute) 사이클
- 레지스터 IR의 비트열에 해당하는 신호를 연산장치에 제공하고,범용 레지스터나 주기억장치에 보내서 기계어 명령어를 수행한다.
레지스터의 종류
- 메모리 버퍼 레지스터(Memory Buffer Register) : 모든 자료가 거치게 되는 자료 출입용 레지스터
- 메모리 어드레스 레지스터(Memory Address Reguster) : 기억 작치 내의 정보를 호출하기 위한 주소 저장용 레지스터
- 명령어 레지스터(Instruction Register) : 현재 수행중인 명령어를 임시로 기억해두는 레지스터
- 프로그램 카운터(Program Counter) : 다음에 실행될 명령어의 주소를 기억한다.
반응형
'좋은 개발자가 되기위한 방법들' 카테고리의 다른 글
Hacking의 기초이론과 공부해가는 과정 (1) | 2021.08.27 |
---|---|
소프트웨어 개발 생명주기의 정의 (0) | 2021.08.25 |
VSCODE 한글 단축키 모음 (0) | 2021.08.20 |
라이브러리와 프레임워크의 개념과 필요성 (2) | 2021.07.21 |
OWASP(10대 공격기법) 웹 애플리케이션 취약점 (0) | 2021.07.13 |