Computer Architecure 2(HardWare-CPU)
두뇌에 해당하는 부분, 프로그램 명령어와 데이터를 읽어와 처리하고 명령어의 수행 순서를 제어함 ___
💿 마이크로 프로세서
CPU의 핵심 기능을 통합한 집적 회로
다목적 실리콘 칩으로, 클록 구동 방식, 레지스터 기반의 바이너리 데이터를 입력으로 받고 메모리에 저장된 지침에 따라 처리한 후 출력을 제공
구성
- ALU: 모든 산술 및 논리 연산
- ControlUnit(제어장치)
- RegisterArray: 데이터 처리를 위한 임시 고속 Access 메모리
💿 구성
전체 구성
- ALU(산술논리연산장치): 비교와 연산을 담당
- 제어장치: 명령어의 해석과 실행을 담당
- 레지스터: 고속 기억장치, 명령어 주소, 코드 ,데이터 연산 결과등을 임시로 저장
제어장치의 구성
마이크로 프로그램이란 CPU의 레지스터나 연산회로를 제어할 수 있는 마이크로 명령어들의 집합
마이크로 프로그램 제어방식과 비교되는 방식은 하드 와이어드 제어방식으로 micro 방식은 cpu의 순차 동작을 프로그램 기법으로 실행하는 것이고 하드 와이어드 방식은 직접 전용 회로를 논리 회로대로설계하는 방식
마이크로 프로그램은 ROM에 저장된다. 수정할 일이 거의 없기 때문이다.
- ID(명령 해독기): 명령 레지스터에 있는 명령어를 해독
- 제어신호 발생기, 부호기(Encoder): 해독된 명령에 따라 각 장치로 보낼 제어 신호를 생성
- 제어주소 레지스터(CAR): 다음에 실행할 micro명령어의 주소를 저장하는 레지스터
- 제어 버퍼 레지스터(CBR): 제어 기억장치로 부터 읽혀진 micro명령어 비트들을 일시적으로 저장
- 제어 기억장치: micro명령어들을 일시적으로 저장
- 순서 제어 모듈: micro명령어의 실행 순서 결정
- 순차카운터(sequence counter): 디코더에 의해 선택된 번호에 해당하는 타이밍 신호 생성
레지스터의 분류
레지스터와 캐시는 명령어 혹은 데이터를 저장하는 공간이라는 점에서 같지만 캐시는 CPU와 별도의 공간으로 주기억장치와 CPU간의 속도 차이를 극복 하기 위한 것이고 Register는 CPU 안에서 연산을 처리하기 위하여 데이터를 저장하는 공간
- 범용 레지스터: 연산에 필요한 데이터나 연산결과를 임시로 저장
- 특수목적 레지스터: 특별한 용도로 사용하는 레지스터
- MAR(메모리 주소 레지스터): 읽기와 쓰기 연산을 수행할 주기억 장치 주소 저장
- PC(프로그램 카운터): 다음에 수행할 명령어 주소 저장
- IR(명령어 레지스터): PC가 지정하는 주소에 기억되어 있는 명령어를 해독
- MBR(메모리 버퍼 레지스터): 주기억장치에서 읽어온 데이터 or 저장할 데이터 임시 저장
- AC(누산기): 연산 결과 임시 저장
- 기타 등등
💿 CPU 동작 과정
과정
- 주기억장치는 입력장치에서 입력받은 데이터 혹은 보조기억장치에 저장된 프로그램 읽음
- CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 그 결과를 다시 주기억 장치에 저장
- 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보냄
- 제어 장치는 1~3의 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어
명령어 인출과 실행
명령어사이클은 하나의 명령어가 수행되는데 필요한 전체 수행과정을 말하며 인출사이클(fetch cycle), 간접 사이클(indirect cycle), 실행 사이클(execute cycle), 인터럽트 사이클(interrupt cycle)로 나누어 진다.
인출 사이클에서 가장 중요한 부분은 PC(프로그램 카운터) 값 증가
인출
- PC에 저장된 주소를 MAR로 전달
- 저장된 내용을 토대로 주기억장치의 해당 주소에서 명령어 인출
- 인출한 명령어를 MBR에 저장
- 다음 명령어를 인출하기 위해 PC 값 증가시킴
- 메모리 버퍼 레지스터(MBR)에 저장된 내용을 명령어 레지스터(IR)에 전달
1
2
3
T0 : MAR ← PC
T1 : MBR ← M[MAR], PC ← PC+1
T2 : IR ← MBR
실행
1
2
3
T0 : MAR ← IR(Addr) //Addr 연산
T1 : MBR ← M[MAR]
T2 : AC ← AC + MBR
💿 캐시 메모리
속도가 빠른 장치와 느린 장치 사이의 속도 차이에 따른 병목 현상을 줄이기 위한 메모리
CPU가 주기억 장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤 다음에 이용할 때 주기억 장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상 시킨다.
다만, 용량이 적고 비용이 비싸다.
듀얼 코어 프로세서의 캐시 메모리
각 코어마다 독립된 L1 캐시메모리를 가지고, 두 코어가 공유하는 L2 캐시 메모리가 내장
L1: CPU 내부에 존재 L2: CPU와 RAM 사이에 존재 L3: 주로 메인보드에 존재한다고 함
디스크 캐시: 주기억 장치와 보조기억장치 사이에 존재하는 캐시
캐시 메모리의 작동 원리
- 시간 지역성: 반복문에 사용하는 조건 변수처럼 한번 참조된 데이터는 잠시 후 참조될 가능성이 높음
- 공간 지역성: A[0], A[1]과 같이 연속 접근시 참조된 데이터 근처에 있는 데이터가 잠시 후 또 사용될 가능성이 높음
캐시 메모리에 저장할 때는 이러한 참조 지역성을 최대한 활용하기 위해 해당 데이터 뿐만 아니라 옆 주소의 데이터도 같이 가져온다.
CPU가 요청한 데이터가 캐시에 있으면 ‘Cache Hit’ 없어서 DRAM에서 가죠오면 ‘Cache Miss’
캐시 메모리 Miss
- Cold miss: 해당 메모리 주소를 처음 불러서 나는 미스
- Conflict miss: 캐시 메모리에 A와 B 데이터를 저장해야 하는데, A와 B가 같은 캐시 메모리 주소에 할당되어 있어서 나는 미스(direct mapped chache에서 많이 발생)
- 즉 A 와 B를 같은 공간에 넣는데 잠깐 B 데이터를 읽어와서 캐쉬하면서 A와 같은 공간에 저장했더니 나중에 A를 찾으려 했더니 A가 없어서 나는 miss
- Capacity miss: 공간이 부족해서 나는 미스
캐쉬 구조 및 작동 방식
- Direct Mapped Cache: 가장 기본적인 구조로, DRAM의 여러 주소가 캐쉬 메모리의 한 주소에 대응되는 다대일 방식
- Conflict Miss가 발생한다는 단점
- Fully Associative Cache: 비어있는 캐시 메모리가 있으면 마음대로 주소를 저장하는 방식
- 저장할 때는 간단하지만 찾을 떄가 문제
- 조건이나 규칙이 없어서 특정 캐시 Set 안에 있는 모든 블럭을 한번에 찾아 원하는 데이터가 있는지 검색해야 한다. CAM이라는 특수한 메모리 구조를 사용해야 하지만 가격이 매우 비싸다
- Set Associative Cache: Direct + Fully 행 안의 어떤 열이든 비어있을 때 저장하는 방식
- Direct에 비해 검색속도는 느리지만 저장이 빠르다.