컴퓨터의 간단 구조: cpu + memory + disk
cpu: 중앙 처리 장치. 가져오기, 디코딩, 실행
명령어 fetch
cu가 디코딩 - opcode(operation code)를 해석
실행 execute - ALU산술논리를 씀. 프로세서 간에 경쟁 가능성있음
WB(write back) - operand에 반영
*명령어는 opcode + operand로 이뤄져있다. (명령어에서 실제로 어떤 동작을 하는지, 명령코드가 연산할 대상인 피연산자)
데이터를 가져오기(Fetch)
데이터는 이진수(011010..)로 표시되며 RAM에서 CPU로 전달됩니다. 각 실행 작업은 모든 작업의 작은 부분일 뿐이므로 CPU는 다음에 어떤 실행이 나올지 알아야 합니다.
명령어는 프로그램 카운터(PC)에 의해 보관됩니다. 그런 다음 PC와 명령문은 IR(지침 레지스터)에 배치됩니다.
그리고 PC 길이는 다음 명령문의 주소를 참조하기 위해 증가됩니다.
디코딩(Decoding)
일단 명령을 가져와 IR에 저장하면 CPU는 명령 해독기라는 회로로 명령을 전달합니다.
명령어는 CPU의 다른 부분으로 전달하여 작동을 위해 전달되는 신호로 변환됩니다.
실행(Execute)
마지막 단계에서 디코딩된 명령문은 완료될 CPU의 관련 부분으로 전송됩니다.
결과는 대개 CPU 레지스터에 기록되며, 이 레지스터는 이후 명령문에 의해 참조될 수 있습니다.
CPU 내부 코어 개수 기준
cpu구성:
[출처] CPU 구조 : 산술논리연산장치(ALU) , CU , 레지스터|작성자 김지훈
CU (Control Unit) : 명령 제어장치 , 입력된 명령어를 해독하여 cpu내부의 움직임을 총괄하고 각과정을 통제한다.
주로 데이터를 메모리로부터 ALU로 옮기라는 명령과 그 후 다시 메모리로 옮기는 명령을 내린다.
산술논리연산 ALU (Arithmetic Logic Unit) :
산술연산장치 , CU로부터 명령을 받아 cpu로 들어온 모든 데이터들을 산술연산, 논리연산한다.
(산술연산 : 덧셈과 같은 숫자 계산 , 논리연산 : 대수비교, 저장등)
중앙제어유닛 CU (control unit) :
프로그램이 실행 될 때 CU에서 아래와 같이 순서대로 처리한다.
인출 : 메모리에 있는 프로그램 데이터를 cpu로 불러오는 작업이다.
해석 : CU에서 불러온 명령어를 해석한다.
실행 : CU에서 해석한 명령어를 ALU가 연산한다.
쓰기 : 결과 나오고, 변경된 부분을 저장한다면 다시 메모리로 보내어 기록시킨다.
레지스터 Register:
cpu내부에 있는 저장장치로 주기억장치인 램보다 빠른 속도로 cpu에 정보를 제공하는 역할을 한다.주로 한 개의 코어에 여러 개의 레지스터로 구성되고, 업무에 따라 범용 레지스터 general - purpose, 특수용 레지스터 pecial - purpose 로 나눌 수 있다.
(ex. PC레지스터: 프로그램카운터. 명령 실행 후 레지스터의 상태를 증가시켜서 현재 처리된 명령어의 개수를 확인함.)
캐시 cache:
컴퓨터 과학에서 빈번하게 쓰이거나 최근에 쓰인 데이터를 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 cpu와 disk 사이의 거리를 좁히는 역할을 하여 걸리는 시간을 절약할 수 있다.
*캐시 일관성 Cache Coherence:
공유 메모리 시스템에서 각 클라이언트(혹은 프로세서)가 가진 로컬 캐시 간의 일관성을 의미한다.
각 클라이언트가 자신 만의 로컬 캐시를 가지고 다른 여러 클라이언트와 메모리를 공유하고 있을 때, 캐시의 갱신으로 인한 데이터 불일치 문제가 발생한다.
캐시 일관성을 유지한다고 하는 것은 이러한 데이터 불일치 현상을 없애는 것을 의미한다.
cpu와 프로그래머는 어떻게 통신하나?
cpu는 바이너리 원툴만 이해한다.(기계어 010101001....같은)
프로그램은 기계어 사용 불가!
1. 프로그래머가 직접 어셈블리어를 작성한다. -> 개발자 허들 존재.
2. 프로그램 언어로(c, java같은 컴파일러) 코딩해서!
*명령어 세트 아키텍처(ISA) 방식