계속 일정한 속도를 유지하기보단 고성능을 요하는 순간에는 순간적으로 클럭 속도를 높이거나 낮추기도 하는 기법을
오버클럭킹
이라고 한다.
코어란, CPU 내 명령어를 실행하는 부품으로 여러 개 있을 수 있다. (싱글코어, 듀얼코어, 트리플코어, 쿼드 코어, 헥사코어 등-> 멀티코어)
하드웨어적 스레드: 하나의 코어가 동시에 처리하는 명령어 단위
- 145쪽 CPU는 8코어 16 스레드면
명령어를 실행하는 부품을 8개 포함
하고,한 번에 열여섯 개의 명령어
를 처리할 수 있는 CPU를 말한다.
하드웨어적 스레드 | 소프트웨어적 스레드 |
---|---|
하나의 코어가 동시에 처리하는 명령어 단위 | 하나의 프로그램에서 독립적으로 실행되는 단위 |
(151p) 멀티스레드 프로세서
는 하나의 코어로 여러 명령어를 동시에 처리하는 CPU이다.
하나의 명령어를 실행하기 위해서 꼭 필요한 레지스터들을 여러 개 갖고 있다면, 멀티 프로세서를 설계할 수 있다!
메모리 입장에서 CPU 정보만 알고 있지, 메모리 내 몇코어 몇스레드인지는 알 수 없다. 한 번에 4개씩 실행하는구나를 느낄뿐.
하드웨어 스레드
: 논리적인 CPU의 개수라는 의미에서 논리 프로세서
라고 부르기도 한다.레지스터 추가 개념 설명 (7. 스택 포인터 / 8. 베이스 레지스터) -> 주소 지정에 사용 - 스택 주소 지정 방식 - 7. 스택 포인터 : 스택의 꼭대기를 가리키는 레지스터 - 메모리 안에 스택처럼 쓸 수 있는 공간이 미리 지정돼있음 (운영체제 시간에 배움) - 8. 베이스 레지스터 - 오퍼랜드(변위의 값으로 삼고) 얼마나 떨어져있는지, 어떤 레지스터와 더할지 더함
- 보기: 멀티 스레드 프로세서 / 멀티코어 프로세서
1)______________
: 명령어를 실행할 수 있는 하드웨어 부품이 CPU안에 두 개 이상 있는 CPU
2)______________
: 하나의 코어로 여러 개의 명령어를 동시에 실행할 수 있는 CPU 정답😉 1) 멀티코어 프로세서: 코어를 여러 개 포함하고 있는 CPU 2) 멀티 스레드 프로세서: 하나의 코어로 여러 명령어를 동시에 처리하는 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와 정보를 주고 받는다.
- 정답😉 메모리 맵 입출력 방식, 고립형 입출력ㄴ