4챕터
ALU와 제어장치
ALU - 연산을 하며, 플래그를 내보낸다
플래그는 캐리플래그(올림수), 제로플래그(결과0), 음수플래그(-기호),인터럽트플래그 등
제어장치 - 명령어 해독, 제어신호를 보낸다
명령어레지스터에서 명령어를 해독, 제어신호를 보내 각 장치를 제어
레지스터
- 레지스터의 종류는 여러가지가 있다.
범용, 플래그, 명령어, pc, sp,... - 스택 주소 지정 방식
스택에 주소를 넣는 방식 (재귀 같은 느낌, 되돌아 올때) - 변위 주소 지정 방식 :
PC를 이용하여 간접주소를 명령어 포함하여 주소를 지정
베이스를 이용하여 간접 주소를 명령어 포함하여 주소를 지정.
(함수 가상테이블 찾을때 어셈블리어 까봤을때 +4 이런식으로 되어있던 부분같음.)둘다 간접적인데 왜 다른가 생각해봤는데. pc는 명령어를 순차적으로 진행되어 명령어가 변칙적으로 운영되는 느낌이고, 베이스는 값이 베이스에 있기때문에 베이스값을 컨트롤 할수 있는점 같다.
명령어 사이클과 인터럽트
- 명령어 사이클
기본적으로는 인출(명령어를 꺼냄) - 실행(명령어 해독, 실행)
거기에 명령어의 대상등이 간접주소일때는 (간접) 추가 인출 발생
+인터럽트 - 인터럽트 : 급하게 실행되는 무언가
동기성 인터럽트: 예외라고하며 폴트(fault), 트랩(trap), 중단(abort), 소프트인터럽트
비동기성 인터럽트 : 알림의 느낌이며, 하드웨어인터럽트
인터럽트 플래그가 사용안함이라도 강제로 실행하는 인터럽트도 있다. (치명적인 상황일때)이 경우는 병렬성 느낌으로 하드웨어를 제어할때, 오래걸리므로 cpu는 그동안 다른일을 하기위해다.
5챕터
클럭
- CPU를 포함한 대부분의 장치들은 컴퓨터의 클럭주기에 맞춰서 구동된다.
- 클럭수는 CPU의 명령어를 실행하는수이므로 클럭수가 빠르면,
더 많이 처리되기 때문에 성능이 향상된다. - 클럭이 빠르면 좋을까? 빨라지는 만큼 발열이 생깁니다
코어와 멀티코어 - 학습관점에서는 CPU구성이 1개의 구성에서 1개의 명령어 처리를한다.
- 현대에서는 코어라고 불리우고, CPU에는 코어가 여러개가 존재할수 있고 멀티코어라고 부른다.
스레드와 멀티스레드 - 스레드는 코어가 한번에 처리할수 있는 명령어의 수다.
- 멀티스레드란 코어안에 처리할수있게 레지스터 집합을 1개 이상을 두어
코어가 병렬식으로 명령어를 한번에 2개 이상으로 처리하는것 처럼(동시성) 하는것.\
명령어 파이프라인
- 명령어 사이클은 크게 2개로 나눠서 이야기한다 (인출-실행) (인출-해독-실행-저장)
여기서 4개로 이야기한다면, 인출하는동안 해독 하는시간이 낭비되지 않게 하는 기법
명령어를 동시에 처리할수 있어서 빠르다. 현대 CPU의 핵심기술이다.
하지만 단점이 있는데- 데이터 위험 : 명령어 순서에따라, 의존적으로 인출하기전에
앞선 명령어가 저장하기전에 실행 되는 위험.
- 뭔 위험 : 명령어 순서에따라 처리중에, 앞선 명령어가 PC등의 현재 명령어 위치를
변경하게되면 구조상 뒤에 실행했던 명령어어는 의미가 없거나, 처리했으면 안된다. - 뭔 위험 : 기억이 안남..
슈퍼스칼라
- 데이터 위험 : 명령어 순서에따라, 의존적으로 인출하기전에
- 슈퍼스칼라는 명령어 파이프라인을 1개가아닌 여러개로 작동하는 방법이다.
비순차적 명령어 처리 - C++에서 생각하면 컴파일러가 최적화 해버리는 느낌이다.
- 인출-해독-실행-저장을 해야하는데 명령어 순서를 바꿔도 결과가 다르지 않을때,
- 쉬지 않고 성능 향상을 위한 처리.
명령어 집합
- 명령어를 연산코드, 오퍼랜드로 구분했다. 이들의 종류를 명령어 집합이라고한다.
CISC - complex inc~ set co~ 복잡한 명령어 집합 구조
- 명령어의 종류가 많으며 가변크기방식을 사용
- 종류가 많기때문에 코드의길이 짧다.
- 하지만 가변크기이기 때문에, 명령어 마다의 시간이 달라,
파이프라인의 기본인 주기적 명령어 실행이 힘들다.
RISC
- Reduce ~~ : 줄인 명령어 집합구조
- 명령어의 종류가 적고 고정크기방식을 사용
- 종류가 적기때문에 코드의 길이가 길다.
- 하지만 고정크기이기 때문에 명령어 마다의 시간이 일정해서,
파이프라인에 적합함. -
- 현대의 CISC 구조를 쓰는 Intel, ARM CPU는 성능을 위해,
CPU내부적으로 명령어를 더 작은단위로 분할하여 파이프라인을 이용한다고 한다.
- 현대의 CISC 구조를 쓰는 Intel, ARM CPU는 성능을 위해,
6챕터
RAM의 특징
- 전원이 꺼지면 데이터가 사라진다(실행) - 휘발성
<-> 비휘발성 - 전원이 꺼져도남아있다(저장) 보조기억장치 : ssd,hdd,usb ... - RAM의 용량과 성능
RAM의 용량이 크면 한번에 실행할수있는 프로그램의
그렇다고 용량이 성능과 비례하지는 않음(메모리에올라가는) 공간이 많아져서 성능향상.
- 램의 종류
- DRAM : 동적램, 오래 사용하지 않는 데이터는 지워지는 특성 갱신해야한다.
- SRAM : 정적램, 데이터가 지워지지 않는 특성, (전원이꺼지면 사라지는건 동일)
<상대적 비교>- DRAM : 느리다, 저렴하다, 집적성이 높다, 갱신필요, 주기억장치로 씀
- SRAM : 빠르다, 비싸다, 집적성이 낮다, 갱신필요X, 캐시메모리로 씀
- SDRAM : 동기화 DRAM : CPU 클럭과 데이터통신이 동기화 된 DRAM (SDR SDRAM)
- DDR SDRAM : Double Data Rate ~ : 대역폭이 2배수 클럭당 데이터를 2배씩 더 통신함
- DDR2 -> DDR에 2배 / DDR3 -> DDR2의 2배
물리주소와 논리주소
- DDR2 -> DDR에 2배 / DDR3 -> DDR2의 2배
- 물리주소는 메모리시점의 주소
- 논리주소는 CPU와 프로그램상의 주소
- 변환을 위해서는 MMU (메모리관리장치)를 통해
물리주소(베이스레지스터에 저장)+논리주소로 메모리에 접근
메모리보호기법 - MMU를 거친다해도 논리주소가 해당 프로그램의 메모리 영역을 침범할수있다.
- 한계레지스터로 해당 프로그램의 논리주소의 한계점을 지정해둔다
- 베이스레지스터 <= 가능한 주소 <= 한계레지스터
캐시메모리
- 메모리에 접근하는데 느리다 해서 등장한 메모리
저장 장치 계층 구조 - CPU에서 더 가까운쪽부터 계층을 만들어놓은 구조
- 레지스터 > 캐시메모리(L1>L2>L3) > 주기억장치 > 보조기억장치
참조지역성원리 - 캐시메모리가 데이터를 어떻게 가져올까? 예상을 해서 가져온다
- CPU사용시 캐시히트 / 사용안할시 캐시미스(성능감소)
- 캐시를 어떤 원리로 하는지의 대한 내용
시간지역성 : 최근에 쓴 데이터를 자주 쓴다.
공간지역성 : 최근에 쓴 데이터 근처를 자주 쓴다.
7챕터
하드디스크
- 자기디스크
- 섹터 : 피자처럼 나눈부분
- 트랙 : 트랙형태로 나눈부분
- 실린더 : 트랙의 원통형
- 헤드 : 하드디스크의 읽기 위한 부분
- 스핀들 : LP판 같은부분 돌리는 부분
- 플래터 : LP판 같은 부분
플래시 메모리 - 셀 0,1 정보저장
- SLC:셀이 하나 / MLC:셀이 2개 .. TLC .. QLC
로 갈수록 저렴, 수명감소, 속도 저하
RAID의 정의
- 하드디스크를 병렬로 저장하는 기법
- 1개의 고용량을 쓰는것보다 4개의 저용량을 쓰는게 성능이 좋은 기법이다.
- 단점으로는 데이터가 물리적으로 분산되어 저장되어있기 때문에 하드고장시 데이터 손실
RAID의 종류 - RAID0 병렬로만 저장
- RAID1 병렬로 저장하는데 미러링으로 데이터를 백업도 같이함 (데이터보호 / 가용 용량이 적음)
- RAID2 병렬로 저장하는데 패리티비트 하드를 둠 (데이터보호 / 검증복원용 하드가 병목)
통신공학에서는 패리티비트로 데이터가 정상인지 검증을 하는데 (odd /even)
여기서 말하는 패리티비트는 검증뿐 아니라 복원도 가능하다 - RAID5 2의 단점을 커버하기위해 패리티비트를 각 하드별로 나눠서 병목 분산시키는 방식
(패리티 계산으로 인한 성능저하 ) - RAID6 5에서 확장되는 방식인데 패리티비트를 2개씩
(5보다는 데이터 용량이 적은느낌)
8챕터
장치 컨트롤러 : 입출력 장치가 너무 다양하다보니 컨트롤 하기 위한 하드웨어적 장치
- 내부적으로 데이터레지스터, 제어레지스터, 한개는 기억안남
- CPU가 어떻게 접근하냐 MMU 메모리관리장치(base레지스터+) 주소 계산
장치드라이버 : OS에서 장치를 인식 하기 위한 소프트웨어적 장치 - 프로그램입출력
- 메모리 맵 방식 : 메모리에 일정부분을 IO포트에 할당.
메모리의 실질적 감소
명령어를 일반 메모리와 동일하게 사용함.
ps. RISC 방식에서 채택
명령어가 같기때문에 파이프라이닝 원칙을 따르기위해 - 고정형 방식 : 메모리를 분리한 방식
명령어로 IO포트와 연결 (in / out)
ps. CISC 방식에서 채택
실제 작동은 명령어 실행시 IO/M#핀 제어로 IO접근제어
- 메모리 맵 방식 : 메모리에 일정부분을 IO포트에 할당.
- 인터럽트 기반 입출력
CPU챕터에서 인터럽트를 이용한 방식
입출력장치가 준비되면 인터럽트 신호를 주어 동작하므로 CPU가 효율적 - DMA입출력
중계역할을 담당하여 CPU가 직접 장치컨트롤러에 접근하지 않게 함.
CPU와 동일한 시스템버스를 써서 CPU가 쉴때만 통신개선버전으로 IO버스가 회로에 있는 것도 있음
와 10시간넘게 했더니 토할것같음..
원래 자료구조랑 좀 볼려고했는데 시간이 안남아서 패스
내일부터는 운영체제인데 페이스조절 확실히 하고 깊게 하는게 좋을듯..
중간 산책좀 많이해야할듯함
'학습 노트 > 개인학습' 카테고리의 다른 글
250503 6일차 (0) | 2025.05.04 |
---|---|
250502 5일차 (0) | 2025.05.03 |
250501 4일차 (0) | 2025.05.02 |
250430 3일차 (0) | 2025.05.01 |
250428 1일차 (0) | 2025.04.29 |
댓글