profile image

L o a d i n g . . .

 

 

 

[스터디 그룹] 혼자 공부하는 프로그래밍 | Facebook

프로그래밍에 관심 있는 분들이 모여있습니다.

www.facebook.com

 

혼공컴운 2주차는 CPU에 대해서 파보는 주였다.

 

이전에 혼자 CS공부하면서 학습했던 CPU포스팅도 낑겨올려보기.

 

[CS] CPU, 프로세스, 스레드

우리는 컴퓨터로 영상을 보면서 블로그를 쓰고, 동시에 카톡으로 친구들과 대화도 한다. 이 모든걸 하면서 파일을 다운로드 할 수도 있다. 이처럼 컴퓨터는 동시에 여러가지 일을 수행할 수 있

h-owo-ld.tistory.com


CPU

CPU는 중앙 처리 장치로 컴퓨터의 뇌라고 부를 수 있다. 컴퓨터에 저장된 프로그램을 불러와 기계어로 작성된 명령문을 해석하고 실행한다. 보조기억장치(ROM, RAM)에서 프로그램의 코드와 필요한 데이터를 꺼내 메인메모리에 올려놓고 작업을 한다.

cpu 내부

CPU 내부에 있는 칭긔들을 하나하나씩 알아보자

 

ALU

ALU(Arithmetic and Logical Unit, 산술논리장치)는 레지스터를 통해 피연산자를 받아들이고 제어장치로부터 수행할 연산을 알려주는 제어신호를 받아들인다. 이후 레지스터와, 제어장치로부터 받아들인 피연산자와 제어신호를 통해 산술연산, 논리연산 등 다양한 연산을 수행해낸다. 

 

플래그 레지스터는 결과값에 대한 추가 정보를 내보내야할 때 연산결과에 추가적인 상태 정보를 나타내는것을 플래그라고 표현한다. CPU가 프로그램 실행 도중 기억해야하는 참고 정보이다.

 

 

제어장치

제어장치는 제어 신호를 내보내고 명령어를 해석하는 부품이다. 제어장치의 제어신호는 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기신호다. 제어장치는 클럭신호, 명령어, 플래그, 제어신호 등이 있다.

제어장치는 플래그 레지스터로부터 플래그 값을 받고, 명령어 레지스터로부터 현재 해석할 명령어를 ㅏㅂㄷ아들인 후 제어버스를 통해 CPU내부 또는 외부로 제어신호를 전달한다. 

 

레지스터

레지스터는 CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 아주 빠른 기억장치다. (125p 2)

레지스터명 기능
프로그램 카운터(PC) or
명령어 포인터(IP)
메모리에서 읽어들일 명령어의 주소를 저장한다.
명령어 레지스터(IR) 방금 메모리에서 읽어들인 명령어를 저장한다. 제어장치는 IR속 명령어를 받아들이고 해석한뒤 제어 신호를 내보낸다.
메모리 주소 레지스터(MAR) 메모리의 주소를 저장한다. CPU가 읽어들이고자 하는 주소 값을 주소버스로 보낼 때 메모리주소 레지스터를 거친다.
메모리 버퍼 레지스터(MBR) or 메모리 데이터 레지스터(MDR) 메모리와 주고받을 값(데이터 명령어)을 저장하는 레지스터. 메모리에 쓰고싶은 값이나 메모리로  부터 전달받은 값은 MBR을 거진다. 
범용 레지스터 일반적인 상황에서 자유롭게 사용하는 레지스터. 데이터와 주소를 모두 저장하며 일반적으로 CPU안에는 여러 범용 레지스터들이 있다.
플래그 레지스터 연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장하는 레지스터

 

 

CPU 명령어의 흐름

명령어 사이클은 하나의 명령어가 처리되는 주기로, 인출, 실행, 간접, 인터럽트 사이클로 구성되어있다.

 

 

코어와 스레드

 

코어

CPU중에서 가장 핵심이 되는 부품. 코어가 하나 이상이라는 것은 일을 할 수 있는 로봇이 여러 대 라고 생각하면된다. 

클럭

2.60GHz처럼 기가헤르츠 단위로 표시되는 정보. 코어의 속도를 이야기한다. GHz숫자가 클수록 로봇이 빠르게 일한다고 생각하면 된다.

스레드

 

하드웨어적 스레드

하나의 코어가 동시에 처리하는 명령어 단위, 즉 하나의 로봇이 낼 수 있는 효율. 멀티 스레드를 사용해 하나의 로봇으로 두 대의 로봇이 일하는 듯한 효율을 낼 수 있다. 예를 들면 2코어 4스레드 사양의 CPU를 장착한 컴퓨터의 정보를 열어보면 4코어가 설치되어 있다고 인식하고있다.

 

소프트웨어적 스레드

하나의 프로그램에서 독립적으로 실행되는 단위.

 

프로세스: 컴퓨터에서 연속적으로 실행중인 프로그램, OS로부터 시스템 자원을 할당받는 작업의 단위 

 

스레드: 프로세스 내에서 실행되는 여러 흐름의 단위 ,프로세스가 할당받은 자원을 일용하는 실행의 단위 ​

어플리케이션 하나가 프로세스, 그 안에서의 분기 처리가 스레드이므로 시스템 자원 한도내에서 계속적으로 생성 가능

 

하나의 하드웨어 스레드에서는 수많은 소프트웨어 스레드를 실행할 수 있다. 자바 스레드를 생각해보면 자바 스레드 사용시 JVM은 OS로부터 시스템 콜을 호출해 커널스레드를 할당받고 1:1 매핑을 받는다. 커널 레벨, 유저 레벨 스레드의 차이도 있다는 것을 알아두자.

 

 

 

멀티코어와 멀티스레드

멀티코어 프로세서: 여러개의 코어를 포함하는 CPU

멀티스레드 프로세서: 하나의 코어로 여러개의 명령어를 동시에 실행할 수 있는 CPU

 

반응형
복사했습니다!