
계속 일정한 속도를 유지하기보단 고성능을 요하는 순간에는 순간적으로 클럭 속도를 높이거나 낮추기도 하는 기법을
오버클럭킹이라고 한다.
코어란, CPU 내 명령어를 실행하는 부품으로 여러 개 있을 수 있다. (싱글코어, 듀얼코어, 트리플코어, 쿼드 코어, 헥사코어 등-> 멀티코어)
하드웨어적 스레드: 하나의 코어가 동시에 처리하는 명령어 단위
- 145쪽 CPU는 8코어 16 스레드면
명령어를 실행하는 부품을 8개 포함하고,한 번에 열여섯 개의 명령어를 처리할 수 있는 CPU를 말한다.
| 하드웨어적 스레드 | 소프트웨어적 스레드 |
|---|---|
| 하나의 코어가 동시에 처리하는 명령어 단위 | 하나의 프로그램에서 독립적으로 실행되는 단위 |
(151p) 멀티스레드 프로세서는 하나의 코어로 여러 명령어를 동시에 처리하는 CPU이다.

하나의 명령어를 실행하기 위해서 꼭 필요한 레지스터들을 여러 개 갖고 있다면, 멀티 프로세서를 설계할 수 있다!
메모리 입장에서 CPU 정보만 알고 있지, 메모리 내 몇코어 몇스레드인지는 알 수 없다. 한 번에 4개씩 실행하는구나를 느낄뿐.
하드웨어 스레드: 논리적인 CPU의 개수라는 의미에서 논리 프로세서라고 부르기도 한다.
레지스터 추가 개념 설명 (7. 스택 포인터 / 8. 베이스 레지스터) -> 주소 지정에 사용 - 스택 주소 지정 방식 - 7. 스택 포인터 : 스택의 꼭대기를 가리키는 레지스터- 메모리 안에 스택처럼 쓸 수 있는 공간이 미리 지정돼있음 (운영체제 시간에 배움) - 8. 베이스 레지스터 - 오퍼랜드(변위의 값으로 삼고) 얼마나 떨어져있는지, 어떤 레지스터와 더할지 더함
![]()
- 보기: 멀티 스레드 프로세서 / 멀티코어 프로세서
1)______________: 명령어를 실행할 수 있는 하드웨어 부품이 CPU안에 두 개 이상 있는 CPU
2)______________: 하나의 코어로 여러 개의 명령어를 동시에 실행할 수 있는 CPU 정답😉 1) 멀티코어 프로세서: 코어를 여러 개 포함하고 있는 CPU2) 멀티 스레드 프로세서: 하나의 코어로 여러 명령어를 동시에 처리하는 CPU, 여러 개의 하드웨어적 스레드를 지원하는 CPU
![]()
정답😉 ④: 멀티스레드 프로세서는 하나의 코어로도 여러 개의 하드웨어 스레드를 처리할 수 있다.
- 명령어 파이프 라이닝
- 슈퍼스칼라
- 비순차적 명령어 처리
명령어 파이프 라이닝: 동시에 여러 개 명령어를 겹쳐 실행

파이프라인 위험
데이터 위험: 저장되기도 전에 원치 않는 결괏값 실행하려 할 때
제어 위험: 프로그램 카운터의 갑작스러운 변화
현재 실행 중인 명령어 다음 주소로 갱신
구조적 위험(자원 위험): 서로 다른 명령어가 동시에 CPU 부품 사용하려 할때
슈퍼스칼라: CPU 내부에 여러 개 명령어 파이프라인 포함한 구조
비순차적 명령어 처리: Out-of-order execution(OoOE)

- ISA: 명령어 집합(instruction set ;
cpu가 어떤 명령어 이해하는지에 따라 컴퓨터 구조 및 설계 방식이 달라짐)- CISC
- RISC
CISC: Complex Instruction Set Computer
적은 수의 명령어만으로도 프로그램 동작-> 메모리 공간 절약RISC: Reduced Instruction Set Computer

주기억장치의 종류 RAM/ROM, 그 중 메모리는
RAM지칭
- 메모리라는 용어 대신
RAM- DRAM
- SRAM
- SDRAM
- DDR SDRAM
보조기억장치는 전원을 꺼도 내용을
ㅇㅈ하지만, CPU는 보조기억장치에 직접 접근하지 못한다.
- 보조기억장치인 비휘발성 저장 장치에는
ㅂㄱ할 대상을 저장하고, 휘발성 저장장치인 RAM에는ㅅㅎ할 대상을 저장한다.- CPU가 실행하고 싶은 프로그램이 보조기억장치에 있다면, 이를 RAM으로 복사하여
ㅈㅈ한 뒤ㅅㅎ한다.- 정답😉 유지, 보관, 실행, 저장, 실행
DRAM : Dynamic RAM


SRAM: Static RAM
💥비휘발성 메모리인 것은 아니다. 전원이 공급되지 않으면 날아간다. 

SDRAM: Synchronous Dynamic RAM

DDR SDRAM: Double Data Rate SDRAM


SDR SDRAM: Single Data Rate SDRAM

DDR2 SDRAM: DDR SDRAM보다 대역폭 2배 넓음
| SDR SDRAM | DDR SDRAM | DDR2 SDRAM |
|---|---|---|
![]() | ![]() | ![]() |

베이스 레지스터: 프로그램의 가장 작은 물리 주소논리 주소: 프로그램 시작점으로부터 떨어진 거리한계 레지스터:

- 저장 장치 계층 구조
- 캐시 메모리
- 참조 지역성 원리
캐시 메모리L1, L2, L3 캐시
속도:
정답😉 속도: L1 (빠름)< L2 < L3(느림) 가격: L1 (비쌈) > L2 > L3
가격:
CPU가 메모리 내 데이터가 필요하다고 판단, L1캐시에 해당 데이터가 있는지를 알아보고, 없다면 L2, L3 캐시 순으로 데이터를 검색

L3 캐시는 여러 코어가 공유하는 형태로 사용
참조 지역성의 원리
캐시 히트💘: 캐시 메모리는 메모리에서 자주 사용될 것으로 예측한 데이터가 실제 들어 맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우1) CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향 ->
시간 지역성
2) 접근한 메모리 공간 근처를 접근하려는 경향 ->공간 지역성
- 실행하려는 프로그램은 관련된 데이터들끼리 한 데 모여있다.
- 하드디스크(HDD; Hard Disk Drive)
하드디스크(자기 디스크 magnetic disk)


탐색 시간 : 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
회전 지연 : 헤드가 있는 곳으로 플래터를 회전시키는 시간
전송 시간 : 하드디스크와 컴퓨터 간 데이터를 전송하는 시간
ex) USB 메모리, SD 카드, SSD 등 모두 플래시 메모리 기반의 보조기억장치
ROM에도 사용, 일상적으로 접하는 전자제품 안에 플래시 메모리가 내장되어있다고 봐도 무방.
셀: 플래시 메모리에서 데이터를 저장하는 가장 단위
SLC(Single Level Cell; 한 셀에 1비트 저장)
MLC(Multiple Level Cell; 한 셀에 2비트 저장)

TLC(Triple Lebel Cell; 한 셀에 3비트 저장)
보기: 다이, 플레인, 페이지, 블록, 셀
__a__이 모여 만들어진 단위를__b__,
그리고__b__가 모여 만들어진 단위를__c__,
__c__이 모여__d__,
__d__이 모여__e__가 됩니다.정답😉 셀, 페이지, 블록, 플레인, 다이
페이지 단위블록 단위⭐⭐⭐ 읽기/쓰기 단위와 삭제 단위가 다르다는 것이 플래시 메모리의 가장 큰 특징
Free: 어떠한 데이터도 저장하고 있지 않아 새로운 데이터를 저장할 수 있는 상태
Valid : 이미 유효한 데이터를 저장하고 있는 상태
Invalid: 쓰레기값이라 부르는 유효하지 않은 데이터를 저장하고 있는 상태

👉1. C라는 새로운 데이터 저장할 경우

👉2. A에서 수정하여 A' 데이터를 저장할 경우
Invalid 상태-> 쓰레기값이 되고, A'가 저장된다. -⭐⭐⭐ 1.에서 유효한 페이지들만을 새로운 블록으로 복사한 뒤, 2. 기존의 블록을 삭제한다.

블록 X의 모든 유효한 페이지를 새로운 블록 Y로 옮기고, 블록 X를 삭제하는 것이다.
논리적 보조기억장치처럼 사용하는 기술
RAID 레벨이라 표현
- 정답😉 RAID 6, RAID 5
RAID 0스트라입, 스트라이핑RAID 1미러링
RAID 4패리티 비트: 오류 검출하고 복구하기 위한 정보
- 참고❗❗❗❗
- RAID 4에서는 패리티 정보를 저장한 장치로써, 나머지 장치들의 오류를 검출/복구한다.
- 패리티 비트는 본래 오류 검출용 정보지만, RAID에서는
오류 복구😊도 가능하다.
RAID 5병목현상이 생김RAID 6
- 입출력 장치에는 종류가 너무 많다.
- 일반적으로 CPU와 메모리 데이터 전송률은 높으나, 입출력장치의 데이터 전송률은 낮다.
전송률: 데이터를 얼마나 빨리 교환할 수 있는지- 어떤 입출력 장치는 CPU/메모리보다 전송률이 높은 경우도 있다.
장치 컨트롤러(입출력 제어기, 입출력 모듈) 라는 하드웨어를 통해 연결된다. 
- CPU와 입출력 장치간의 통신 중개
- 오류 검출
- 데이터 버퍼링
데이터 버퍼링: 전송률이 높은 장치와 낮은 장치에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법
데이터 레지스터: CPU와 입출력 장치에 주고받을 데이터가 담김, 버퍼 역할을 함. 최근에는 레지스터 대신 RAM 사용하기도 한다.상태 레지스터: 입출력 작업 상태 정보제어 레지스터: 입출력 장치가 수행할 내용에 대한 제어 정보/명령 저장

- 정답😉 2, 컴퓨터가 장치 드라이버를 인식하고 실행할 수 있다면 해당 입출력장치의 사용이 가능하다.
CPU가 프로그램 속 명령어를 실행하는 과정에서 입출력 명령어 만나면, CPU는 입출력 장치에서 연결된 장치 컨트롤러와 상호작용
- CPU는 제어 레지스터에
쓰기명령 보냄- 하드디스크는 하드디스크 상태를 확인하고, 상태 레지스터에
준비완료표시- CPU는 상태 레지스터를 주기적으로 읽어보며 하드디스크의 준비 여부를 확인
- 준비됐음을 알게되면, 백업할 메모리 정보를 데이터 레지스터에 쓴다.
- 백업(쓰기)작업이 끝나지 않았다면 상태 레지스터부터 반복, 끝나면 작업 종료
👉 CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어짐
🤔⚠️ CPU는 여러 장치 컨트롤러 속 레지스터들을 모두 알고 있기란 어렵다.
메모리 맵 입출력과 고립형 입출력메모리 맵 입출력
하나의 주소 공간으로 간주하는 방법
⭐⭐ CPU는 메모리의 주소들이나 장치 컨트롤러의 레지스터들이나 모두 똑같이 메모리 주소를 대하듯 하면 된다는 점이다.
고립형 입출력
메모리 읽기/쓰기(명령어 실행할 땐 메모리에 접근)선 외입출력장치 읽기/쓰기 선(명령어 실행 시 장치 컨트롤러에 접근)이 따로 있다면, 메모리에도 1024개의 주소 공간을 활용, 입출력장치에도 1024개의 주소 공간 활용 가능 
입출력 장치에 의한 하드웨어 인터럽트: 입출력 장치가 아닌, 장치 컨트롤러에 의해 발생한다. 
인터럽트 비트가 활성화되어 있는 경우, NMI(Non-Maskable interrupt)가 발생한 경우, CPU는 우선순위가 높은 인터럽트부터 처리하게 된다. NMI: 인터럽트 비트를 비활성화해도 무시할 수 없는 인터럽트 CPU에 지금 처리해야 할 것이 무엇인지 알려주는 장치

- PIC가 장치 컨트롤러에서 인터럽트 요청 신호 받아들임
- 우선순위 판단한 뒤 CPU에 처리해야 할 인터럽트 요청 신호 보냄
- CPU는 PIC에 인터럽트 확인 신호를 보냄
- PIC는 데이터 버스를 통해 CPU에 인터럽트 벡터를 보낸다.
- CPU는 인터럽트 벡터를 통해 인터럽트 요청의 주체를 알게되고, 해당 장치의 인터럽트 서비스 루틴을 실행한다.

- CPU는 DMA 컨트롤러에 입출력 장치 주소, 수행할 연산(읽기/쓰기), 읽거나 쓸 메모리의 주소 등과 같은 정보로 입출력 작업을 명령
- DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용 하며 입출력 작업 수행
- DMA 컨트롤러는 필요한 경우 에모리에 직접 접근하여 정보를 읽고씀
- 입출력 작업 마치면 DMA 컨트롤러는 CPU에 인터럽트를 걸어 작업이 끝났음을 알림

입출력 버스와 연결되는 통로를 통해 시스템 버스를 타고 CPU와 정보를 주고 받는다.
- 정답😉 메모리 맵 입출력 방식, 고립형 입출력ㄴ