[마이크로프로세서 (microprocessor, microprocessing unit)]
마이크로 프로세서(초소형 연산 처리 장치)는 컴퓨터의 중앙 처리 장치(CPU)를 말합니다.
중앙처리장치(CPU)는 제어장치 + 연산장치 + 레지스터가 한개의 반도체 칩(IC)에 내장된 장치 입니다.
기계어 코드를 실행하기 위하여 실행 과정을 단계별로 나누어 처리하기위한 "마이크로 코드"를 작성하며,
작성된 코드들에 의해 단계적으로 처리하는 논리회로를 의미합니다.
마이크로프로세서 개발자는 기계어 설계를 하며, 기계어를 수행하기 위하여 마이크로 코드를 작성합니다,
이때 기계어를 분류하여 공통점을 찾아내고 한개의 기계어 코드가 실행되는 과정을 각 단계별로 기능적 블럭의 형태로 나눕니다.
예시로 c언어의 함수처럼 각 기능별로 작성하고 이것을 디지털회로와 결합하여 동작하게 하는것과 같습니다.
작성된 마이크로코드는 마이크로프로세서 내의 마스크 룸에 저장되며 사용자가 변경할 수 없습니다.
마이크로프로세서는 컴퓨터의 CPU의 기능을 한개 혹은 몇 개 이내의 직접회로에 집약합니다.
디지털 데이터를 입력받고 메모리에 저장된 지시에 따라 그것을 처리하며 결과를 출력으로 내놓는 다목적의 프로그램이 가능한 기기이며 2진수로 대표되는 숫자와 기호를 바탕으로 작동합니다.
마이크로프로세서의 성능은 클럭 주파수(Hz)와 내부 버스의 폭(Bandwidth)으로 평가 됩니다.
*클럭주파수 : 전기가 On/Off되는 주기.
*내부버스의폭 : CPU내부의 레지스터끼리 정보를 주고 받는 폭.
마이크로프로세서의 기본적인 처리 속도는 트랜지스터의 직접도에 따라 결정 됩니다.
*트랜지스터 : 전류나 전압의 흐름을 조절해 주는 것.
마이크로프로세서의 종류를 나누어 볼 수 있는데 크게 RISC & CISC 두가지로 나뉩니다.
간단히 보자면 RISC(특수목적용), CISC(다목적용) 으로 볼 수 있습니다.
CPU내용 정리에 앞서 조사하던중 CPU 작동방식을 상세하게 표현한 영상을 참조하였습니다.
https://www.youtube.com/watch?v=Fg00LN30Ezg
- 트렌지스터 원리 0:12 (C언어공부때 연산자 AND OR NOT 부분과 유사하여 참고에 도움이 되었음)
- 산술 논리 장치 9:07 (산술 논리 장치 ALU : Arithmetic Logic Unit)
- 캐시 메모리 11:10
- 레지스터 12:00
- 스레드 18:00
- 프로세서의구조(아키텍처) 18:20
[CPU (Central Processing Unit / 중앙 처리 장치)]
CPU는 컴퓨터에서 기억, 해석 ,연산, 제어의 4대 주요 기능을 관리하는 장치를 말합니다.
컴퓨터의 대뇌라고 할 정도로 매우 중요한 부분입니다. 프로그램의 명령어를 해석하여 데이터를 연산 및 처리 하고 제어해줍니다.
CPU는 출력을 전달하기전에 컴퓨터의 RAM에서 입력을 가져와 명령문을 이해하고 처리 합니다.
컴퓨터와 노트북, 스마트폰, 태블릿, 스마트TV 등등에 다양한 기기에 사용되며 다른 하드웨어와 상호 작용하여 기기를 작동 시키도록 해줍니다.
CPU의 핵심 기능은 크게 세단계로 분류 됩니다.
인출 / 데이터 가져오기(Fetch)
데이터는 2진수로 표시되며 RAM에서 CPU로 전달되고 명령어는 프로그램카운터(PC)에 의해 보관됩니다.
그다음 프로그램카운터(PC)와 명령분은 지침레지스터(IR)에 배치됩니다.
그리고 프로그램카운터(PC)의 길이는 다음 명령문의 주소를 참조하기 위하여 증가 합니다.
해독 / 디코딩(Decoding)
명령어를 가져와 지침레지스터(IR)에 저장하면 CPU는 명령 해독기라는 회로를 통하여 명령을 전달합니다.
명령어는 CPU의 다른 부분으로 전달하여 작동을 위해 전달되는 신호로 변환되는데 이것이 디코딩입니다.
실행(Execute)
디코딩된 명령문은 완료될 CPU의 관련 부분으로 전송됩니다.
결과는 대개 CPU 레지스터에 기록되며 이 레지스터는 이후 명령문에 의해 참조될 수 있습니다.
(예를 들자면 계산기의 메모리 기능)
[메모리]
메모리는 주 기억 장치의 일환으로, 보조 기억 장치에 있는 프로그램들이 실행 될 때 주 기억장치인 메모리에 적재되어 프로세스라는 이름으로 실행됩니다.
메모리에는 여러 종류가 있는데 대표적으로 주기억장치, 보조기억장치 + 가상메모리 가 있습니다.
주기억장치와 보조기억장치는 이전 정리 했었던 것을 참조합니다.
https://rhksgml78.tistory.com/5
가상 메모리(Virtual Memory)는 메모리를 관리하는 기법 중의 하나로 실제 메모리주소가 아닌 가상의 메모리 주소를 사용하는 방법을 의미합니다.
가상 메모리를 사용할 경우 메모리의 용량이 한정되어 있더라도 더 많은 용량의 메모리를 사용할 수 있게 된다는 장점이 있습니다.
예를 들어 4GB용량의 메모리가 있다는 가정을 한고 가상 메모리 기법을 사용하게 된다면, 각 프로세스마다 4GB를 사용하는 것이 가능합니다.
가상 메모리는 세그먼트 기법과 페이징 기법의 2가지의 기법이 있습니다.
세그먼트(Segmentation)기법
가상 메모리를 서로 크기가 다른 논리적 단위인 세그먼트로 나누는 것닙니다.
메모리를 용도에 따라 영역을 나누어 주는 방법 입니다.
페이징(Paging)기법
가상 메모리를 서로 같은 크기의 블록으로 나누는 것을 의미 합니다.(마치 책의 한페이지처럼)
안 쓰는 페이지는 보조 저장 장치에 page file로 저장시켜두고 그 페이지가 필요할때마다 스왑하여 페이지를 교체해주는 방식으로 사용하는 기법입니다.
각 기법에대한 상세한 글은 다음 블로그를 참조합니다.
[레지스터]
프로세스 내부에 레지스터들이 존재하고 레지스터는 가시 레지스터와 불가시 레지스터로 구분 됩니다.
가시 레지스터는 사용자가 운영체제와 애플리케이션을 통해 정보를 변경할 수 있습니다.
불가시 레지스터는 사용자가 변경할 수 없으며 오직 프로세스 내부에서만 다루어 집니다.
사용자 가시 레지스터
종류 | 설명 |
데이터 레지스터(DR) (Data Register) |
함수 연산에 필요한 데이터를 저장하여 산술, 논리 연산에 사용 |
주소 레지스터(AR) (Address Register) |
주소를 계산하는데 필요한 주소의 일부분을 저장. 기준 주소 레지스터 : 프로그램을 실행할 때 사용하는 기준 주소 값을 저장. 관련된 정보들을 연속된 저장 공간으로 지정한다. 인덱스 레지스터 : 유효 주소를 계산하는데 필요한 주소 정보 저장 스택 포인터 레지스터 : 메모리에 프로세서 스택을 구현하여 현재 스택 위치를 사용하는데 이용 |
사용자 불가시 레지스터
(위영상의 레지스터 12:00 부분부터 참조하도록 한다 / 영상보는게 이해가더 잘됨)
종류 | 설명 |
프로그램 카운터(PC) | 다음 실행할 코드 위치를 저장하는 레지스터이다. |
명령어 레지스터(IR) | 현재 실행하는 명령어를 보관하는 레지스터이다. |
누산기(AC) | 데이터를 일시적으로 저장하는 레지스터이다. |
메모리 주소 레지스터(MAR) | 유효 번지를 상대적으로 계산할 때 사용한다. |
메모리 버퍼 레지스터(MBR) | 주기억 장치에서 연산에 필요한 자료를 호출하여 저장한다. |
[캐시]
메인 메모리는 프로세서와 보조기억장치 사이에 존재하며 이때 둘 사이의 속도 향상을 위해 관여합니다.
프로세서와 메인 메모리간에도 속도 향상을 위하여 관여하는 것이 캐시 입니다.
[ 프로세서 ↔ 캐시 ↔ 메인메모리 ↔ 보조기억장치&주변장치 ]
캐시는 속도가 빠른 프로세서와 상대적으로 느린 메인메모리 사이의 속도를 보완하고자하는 역할을 합니다.
메인 메모리에서 데이터를 블록 단위로 가져와 프로세서에 워드 단위로 전달하여 속도를 높혀줍니다.
캐시의 동작 원리는 프로세서에서 필요한 데이터를 메인 메모리에서 찾기도 전에 캐시에 해당 주소의 자료의 유무를 먼저 검색하는데 이때 해당하는 주소의 비트 24비트 중 22비트를 우선 캐시의 모든 라인과 비교하여 일치하는 라인이 있는지를 찾습니다.
예를 들어 비트가 1010 1111 0000 1100 0001 0110일때 1010 1111 0000 1100 0001 01을 먼저 검색하고
존재한다면 맨뒤 두자리 00, 01, 10, 11을 검색하여 일치하면 가져오게 됩니다.
캐시의 성능은 프로세서가 참조할 주소 자료가 얼마나 들어있는가에 좌우가 되며 프로세서가 찾으려는 주소의 자료가 캐시에 많이 존재한다면 캐시 히트율이 높다고 볼 수 있습니다.
캐시가 효율적으로 동작하기 위해서는 캐시에 저장할 데이터가 지역성을 갖추어야 합니다.
여기서 지역성이란 데이터의 접근이 시간,공간 적으로 가깝게 있는 것을 의미합니다.
시간적 지역성
특정 데이터가 한번 접근되었을 경우, 가까운 미래에 또 한번 데이터에 접근할 가능성이 높은 것 입니다.
메모리 상의 같은 주소에 여러차례 읽기 쓰기를 수행할 경우 상대적으로 작은 크기의 캐시를 사용해도 높은 효율성을 기대할 수 있습니다.
공간적 지역성
특정 데이터와 가까운 주소가 순서대로 접근되었을 경우를 의미합니다.
CPU캐시나 디시크캐시의 경우 한 메모리 주소에 접근할 때 그 주소뿐만이아닌 해당 블록 전부를 캐시에 가져오게 됩니다. 이때 메모리 주소를 오름차순이나 내림차순으로 접근한다면, 캐시에 이미 저장된 같은 블록의 데이터를 접근하게 되므로 캐시의 효율성을 기대할 수 있습니다.
'공부' 카테고리의 다른 글
[CS]바이트 패딩(Byte Padding) (0) | 2023.04.20 |
---|---|
[CS]캐시 메모리(캐시히트&캐시미스) (0) | 2023.04.20 |
[C,C++] 함수 호출 규약 (0) | 2023.04.08 |
[참고자료] 2D 게임 에셋 추출 하기 (0) | 2023.01.30 |
게임 에셋 검색 참조 사이트 (0) | 2023.01.30 |
댓글