소프트웨어 기초도 공부하는 주디!
개인 공유용으로 기록!
1) GPU
GPGPU(General-Purpose computing on Graphics Processing Units) 기술
- GPU에서 그래픽 연산 이외의 목적을 가진 프로그램을 실행할 수 있도록 해주는 기술
- 많은 수의 단순 ALU가 있어 높은 수준의 병렬 처리가 가능하고, 이로 인해 CPU에 비하여 프로그램 병렬 처리 속도가 높아진다.
- OpenCL을 이용하여 프로그래밍할 경우 다양한 제조사의 GPGPU 기기에서 실행 가능한 프로그램을 작성할 수 있다.
- GPU는 CPU에 비해서 대량의 간단한 연산을 병렬로 빠르게 처리하는 데 적합한 구조이다.
2) CPU : 중앙처리장치
[ 제어 CPU 레지스터 ]
1. 명령어 레지스터(IR, Instruction Register): 가장 최근에 주기억장치인 RAM에서 인출한 명령어를 저장
2. 프로그램 카운터(PC, Program Counter): 주기억장치에 저장된 다음에 인출한 명령어의 주소를 가지고 있는 레지스터
3. 주소 레지스터(MAR, Memory Address Register): CPU가 메모리에 접근하기 위해 참조하려는 명령어의 주소 혹은 데이터의 주소를 보관
4. 내용 레지스터(MBR, Memory Buffer Register): 기억장치에 쓰일 데이터 혹은 가장 최근에 읽은 데이터 또는 명령어가 저장된다.
- CPU와 주기억장치의 속도 차이가 크기 때문에 완충해 주는 역할을 한다.
5. 인덱스 레지스터(Index Register): 인덱스 주소 지정 방식에 사용되며 명령어가 실행될 때마다 인덱스 레지스터 내용이 자동적으로 증가 혹은 감소한다. 배열의 데이터를 인덱싱할 때 사용한다.
6. 누산기(AC, Accumulator): 연산결과를 일시적으로 저장, 명령어 실행 시 필요한 데이터를 일시적으로 보관
7. DMA: 입출력장치와 주기억 장치 사이의 통신을 담당한다.
[ CISC vs RISC 프로세서 ]
구분 | CISC | RISC |
명령어 | 많다 | 적다 |
전력소모 | 많다 | 적다 |
명령어 길이 | 가변길이 | 고정길이 |
하드 복잡도 | 복잡 | 단순 |
프로그램 | 간단 | 복잡 |
레지스터 | 적다 | 많다 |
처리속도 | 느리다 | 빠르다 |
제어방식 | 마이크로 프로그래밍 | 하드와이어드 |
파이프라이닝 | 적은 파이브라이닝 이용 | 파이프라이닝 이용 |
상용 | Intel 80 x 86 chip | DEC Alpha chip |
- RISC는 CISC보다 제어 장치를 간단하게 만들 수 있기 때문에 남는 돈으로 레지스터와 캐시 등을 추가하였다.
- CISC는 필요한 명령어 셋을 갖춘 프로세서로 가장 효율적인 방법으로 요구 능력을 제공한다.
[ CPU 명령어 처리 순서 ]
- 프로그램 카운터 값을 MAR에 적재
- 주기억장치로부터 명령어를 읽어 MBR 적재
- MBR에 있는 명령어를 IR에 적재
- IR에 적재된 명령어를 해독한 후 그 결과에 따라 연산 수행
- 인터럽트 발생유무 확인
명령어 인출 -> 명령어 해독 -> 오퍼랜드를 가지고 오기 위해 메모리 접근 -> 명령어 실행
3) 주기억장치
[ 메모리 처리 속도 ]
레지스터 > L1 Cache(SRAM) > L2 Cache(SRAM) > 주기억장치(DRAM) > 보조기억장치(HDD, SSD) > 보조기억장치(CD/DVD, 블루레이) > 클라우드
[ 메모리 ]
✔️ RAM
: 읽고/쓰기 자유로운 메모리, 휘발성 메모리
1. DRAM: 재충전이 필요한 메모리, 축전기 사용, SRAM에 비해 접근 속도가 느림, 저장 밀도가 높다.
- 대용량, 저속 기억장치 → 메인 메모리에 사용
- 소비전력 낮음, 재충전 필요
- 주기억 장치로 사용
2. SRAM: 재충전이 필요 없는 메모리, Flip-Flop 조합으로 구성
- 소용량, 고속 기억장치 → 캐시 메모리에 사용
- 소비전력 높음, 플립플롭이 주요 회로
- CPU에 근접한 고속의 캐시 메모리로 사용
✔️ ROM
1. MASK ROM: 쓰기 불가능, 제조단계에서 데이터를 쓰면 영구적
2. FROM: 1회 쓰기 가능, 사용자가 원하는 정보를 저장 가능
3. EPROM: 자외선을 이용해 내용 지울 수 있다.
4. EEROM: 전기적인 방법으로 내용 지울 수 있다.
5. BIOS는 ROM
NAND flash 메모리
- refresh가 필요 없는 비휘발성 메모리
- 페이지 단위로 읽기/쓰기 동작
- 데이터를 많이 쓸수록 셀 수명 단축
- 모든 블록을 지우기 전까지 해당 자료를 변경할 수 없다.
- 대기 중 전력 소모가 적다.
- 외부 충격에 강하다.
프로세스 적재 알고리즘
1) 최초 적합 (first-fit)
여러 유후 공간을 차례로 검색하다가 프로그램을 저장할 수 있을 만큼의 크기를 가진 부분을 찾으면 그곳에 할당하는 방법
- 탐색 시간을 줄일 수 있다.
2) 최적 적합 (best-fit)
여러 공백 중 새로운 프로그램이 요구하는 크기보다 크면서 가장 크기가 비슷한 공간을 채택하여 할당하는 방법
- 내부 단편화 최소화
3) 최악 적합 (worst-fit)
존재하는 유후 공간 중 가장 큰 부분을 찾아 할당하는 방법
- 남는 공간을 재할당한다.
4) Buddy 할당
- 외부 단편화 최소화
4) Cache: 캐시기억장치
- SRAM(재충전이 필요 없는 메모리, Flip-Flop 조합으로 구성, 고속 캐시 메모리) 사용
캐시 일관성을 유지하기 위한 다양한 프로토콜
: 스누핑(snooping) 프로토콜, MESI 프로토콜, 디렉토리 기반 프로토콜
캐시 적중률
💡 평균 기억 장치 접근시간 = 적중률 * 캐시 기억장치 접근시간 + (1-적중률) * 주기억장치 접근시간
캐시 사상 방식
1) 직접 사상: 교체 기법이 불필요하고 캐시 효율이 낮아질 수 있는 사상
- 충돌 실패 발생
- 캐시 블록 교체 정책이 필요 없다.
- 어느 한 캐시 슬롯에만 사상될 수 있는 방식으로 구조가 간단하고 구현 비용이 적다.
2) 완전 연관 사상: 연관기억장치 이용하여, 어떤 슬롯으로든 적재할 수 있도록 하여 캐시 적중률이 가장 좋다.
3) 2-way 집합 연관 사상: 직접과 완전 연관을 결합. 주기억장치의 내용이 정해진 집합 내에서 집합의 어디에도 올 수 있기 때문에 캐시 적중률이 완전 연관 다음으로 좋다.
- ex. 라인 수 계산 : set 필드 9비트 -> 2^9 * 2 = 2^10
4) 4-way 집합 연관 사상: 1개의 집합에 4개의 캐시 슬롯이 저장된다.
sol)
라인 수 = 캐시 슬롯의 개수와 동일 = 256개 = 2^8개
캐시기억장치 크기 = 8KByte = 2^13 바이트
캐시 슬롯 1개의 크기 = 2^13 / 2^8 = 2^5 바이트
* 오프셋 필드의 크기 = 5비트
집합 개수 = 2^8 / 2^2 = 2^6 세트
* 집합 필드의 크기 = 6비트
write-back 정책
새롭게 생성된 중앙처리장치의 데이터를 캐시기억장치에만 기록하고 주기억장치는 나중에 기록하는 방식
write-through 정책
캐시에 쓰기 동작을 수행할 때 메인 메모리에도 동시에 쓰기 동작이 이루어지는 방식
5) 보조기억장치
- 해밍코드: 자기 정정 부호의 하나로 비트 착오를 검출해서 1bit 착오를 정정하는 부호 방식
- 패리티 비트: 정보의 전달 과정에서 오류가 생겼는지를 검사하기 위해 추가되는 비트로, 1 bit의 오류를 찾아낼 수 있다.
[ RAID(Redundant Array of Inexpensive Disk) ] : 1+1
- RAID 0 : 데이터 스트라이핑(분산 저장), 데이터 복구 불가
- 2개 이상의 디스크에 블록 단위로 스트라이핑 하여 저장
- RAID 1 : 미러링, 중복 저장
- 데이터 미러링(중복 저장), 중복 저장으로 데이터 복구가 가능하지만 용량 효율이 떨어짐
- RAID 2 : 해밍코드
- 비트 단위 데이터 스트라이핑, 해밍코드를 이용한 데이터 복구
- RAID 3 : 바이트(또는 바이트) 단위 데이터 스트라이핑, 패리티 비트(별도의 패리티 디스크 사용)를 이용한 데이터 복구
- 데이터를 블록 단위로 저장하여 대용량의 읽기 중심 서버용으로 사용
- RAID 4 : 블록 단위 데이터 스트라이핑, 패리티 비트(별도의 패리티 디스크 사용)를 이용한 데이터 복구
- 별도의 패리티 디스크 사용하여 저장
- RAID 5 : 블록 단위 데이터 스트라이핑, 패리티 비트(모든 디스크에 나누어 저장)를 이용한 데이터 복구
- 모든 디스크에 분산
- RAID 6 : 두 개의 패리티 디스크 사용, 장애에도 데이터 복구 가능
[ PC 전원을 켜면 ]
- ROM에 저장된 BIOS 실행되면 상태 점검
- 보조기억장치에 저장되어 있던 운영체제가 주기억장치로 로드
6) 입출력장치
1. DMA(Direct Memory Access)
- 메모리와 주변장치 간의 데이터 교환 시 중앙처리장치 개입 없이 직접 접속하여 고속으로 데이터를 전송하는 방식
- 메모리와 주변 장치 사이
- 버스 마스터로 동작
- DMA 제어기는 여러 입출력 장치가 공유
- 사이클 스틸링과 같은 의미
- 데이터 전송 완료되면 DMA 제어기가 CPU로 인터럽트 신호 전송
2. 채널: 하나의 명령어에 의해 여러 개의 블록을 입출력할 수 있다.
3. USB
- 하나의 선으로 일괄 관리
- 패킷 단위로 데이터 전송
- 2.0의 속도는 480Mbps
- 주변기기를 127개 확장 연결 가능
- 별도의 주변장치용 전원 장치가 필요 없다.
효율성 측면 순서
IOP(입출력 프로세서) > DMA(직접 메모리 접근) > 인터럽트 > 폴링
7) 시스템 버스
버스의 종류는 CPU 내부 버스, 시스템 버스, 입출력 버스가 있다. 이때 시스템 버스는 용도에 따라 주소 버스, 데이터 버스, 제어 버스로 구성된다.
- 특정 장치를 이용하면 버스를 통해서 입출력 장치와 주기억장치 간 데이터가 CPU를 거치지 않고 전송될 수 있다.
- 3-state 버퍼를 이용하면 데이터를 송신하고 있지 않는 장치의 출력이 버스에 연결된 다른 장치와 간섭하지 않도록 분리시킬 수 있다.
[ 시스템 버스 ]
1. 주소 버스
- 중앙처리장치가 주기억장치로 데이터를 쓰기(write) 동작을 하거나 데이터를 읽기(read) 동작을 할 때, 해당하는 주기억장치 장소를 지정하는 주소를 전송하기 위한 선들의 집합
- 단방향 전송
- 요약! 주소 정보를 전달
2. 데이터 버스
- 컴퓨터 시스템을 구성하는 장치들 사이에 데이터를 전송하는 선들의 집합
- 명령어도 데이터 버스에 속한다.
- 양방향 전송 가능
3. 제어 버스
- 중앙처리장치와 주기억장치 및 입출력장치 사이에 제어 신호들을 전송하는 선들의 집합
[ 데이터 흐름과 제어 흐름 ]
1. 제어 흐름: 제어장치로부터 나오는 단방향 선
- ⓐ, ⓓ, ⓔ, ⓖ, ⓗ, ⓙ
2. 데이터 흐름: 주기억장치로 오고 가는 양방향 선
- ⓑ, ⓒ, ⓕ, ⓘ
(단, 입출력은 단방향이다.)
8) 컴퓨터 주소 지정 방식
속도가 빠른 순
즉시 주소지정 > 레지스터 주소지정 > 직접 주소지정 > 레지스터 간접 주소지정 > 간접 주소지정
- 즉시 지정방식: 실제 자료가 기억되어 있는 형식
- 레지스터 주소지정: 오퍼랜드가 레지스터에 저장
- 직접 주소지정: 주기억장치 1번 접근
- 레지스터 간접 주소지정: 레지스터 1번 접근
- 간접 주소지정: 주기억장치 2번 이상 접근해야 함
- 사용 이유는 지정 가능한 주소 범위를 확대하기 위해서
- 인덱스 주소지정: 주소부분에 인덱스 레지스터 값 더해 유효주소
- 상대 주소지정: 유효주소 = 명령어의 주소 필드의 값 + PC 레지스터 값
9) 파이프라이닝(Pipelining)
병렬 처리 기법은 하나의 코어에서 작업을 나누어 병렬로 처리하는 파이프라인 기법과 여러 개의 코어를 사용하여 동시에 작업을 진행하는 슈퍼 스칼라 기법으로 나뉜다.
> 파이프라이닝
파이프라인 기법에서는 명령어를 여러 개의 단계로 분할하여 각 단계를 처리하는 하드웨어를 독립적으로 구성한다.
[ 해저드 ]
: 파이프라이닝 기법이 적용된 프로세서에서 파이프라인 실행이 계획될 수 있는 조건이 충족되지 않아 기술 전체 또는 일부가 정지될 수 있는 상황 (파이프라이닝의 위험)
1. 데이터 해저드
- 명령의 값이 현재 파이프라인에서 수행 중인 이전 명령의 값에 종속된다.
- 해결 방법: 데이터 전방 전달(data forwarding, 경로가 저장 전에 미리 사용)을 수행하면 된다.
Ex.
A = C + D
E = A * 2
이 명령어는 데이터 해저드로 A 데이터를 사용하는 두 번째 명령어는 첫 번째 명령어가 끝날 때까지 동시에 실행되면 안 된다.
그래서 해결 방법으로 명령어 단계를 지연한다.
2. 구조적 해저드
- 하드웨어가 여러 명령들의 수행을 동시에 지원하지 않기 때문에 발생
- 하드웨어 자원 부족 때문에 명령어를 적절한 클록 사이클에 실행할 수 있도록 지원하지 못할 때 발생
- 자원 충돌
- 해결방법: 부족한 자원을 추가
3. 제어 해저드
- 분기 명령어에 의해서 발생한다.
- 실행할 명령어를 적절한 클록 사이클에 가져오지 못할 때
- 분기를 결정한 시점에, 잘못된 명령이 파이프라인에 있어 발생한다.
- 즉, 명령어를 제때 가지고 오지 못한다.
- 해결 방법: 분기 예측, 지연 분기
[ 실행 시간 계산 ]
(파이프라인 단계 + 명령어 개수 - 1) * 1단계 실행시간
[ 명령어 파이프라이닝 4단계 ]
D1: 명령어 인출
- 다음에 실행될 명령어를 기억장치로부터 인출하는 단계
D2: 명령어 해독
- 제어 유니트에서 해독기를 이용하여 명령어의 op-code를 해석하는 단계
D3: 오퍼랜드 인출 (주소 인출)
- 연산에 필요한 오퍼랜드의 데이터를 기억장치로부터 인출하는 단계
D4: 실행
- 해독기에서 정해진 연산을 수행하는 단계
명령어 파이프라인과 관련 있는 것
-> 슈퍼스칼라: CPU 내에 파이프라인을 여러 개 두어 명령어를 동시에 실행하는 기술
> 슈퍼 스칼라 기법
코어 2개를 구성하여 각 단계에서 동시에 실행되는 명령어가 2개라는 점이 다르다.
> 슈퍼파이프라인 기법
파이프라이닝 기법 강화한 것이다. 파이프라인의 각 단계를 세분하여 한 클록 내에서 여러 명령어를 처리할 수 있다.
> 슈퍼파이프라인 슈퍼스칼라 기법
슈퍼파이프라인 기법을 여러 개의 코어에서 동시에 수행하는 방식이다.
> VLIW 기법
컴파일러 병렬 이용
CPU가 병렬 처리를 지원하지 않는 경우 소프트웨어적으로 병렬 처리하는 방법이다.
동시에 수행할 수 있는 명령어들을 컴파일러가 추출하고 하나의 명령어로 압축해서 실행한다.
문제 풀이
1) K 단계로 나누어도 K배만큼 속도 향상 X
2) 가장 긴 단계를 기준으로
3) 정답
4) 제어 해저드에 대한 설명
10) 병렬 컴퓨터
[ 플린(Flynn)의 병렬컴퓨터 ]
1. SISD: 단일 프로세서 시스템
2. SIMD: 하나의 명령어 스트림이 다수의 처리장치들에서 동시에 처리되는 기술
- 배열 프로세서, 벡터 프로세서, GPU
3. MISD: 처리 장치에서 수행되는 명령은 다르지만, 전체적으로는 하나의 데이터 스트림을 가지는 형태
4. MIMD(Multiple Instruction Stream): 다수의 처리 장치에서 서로 다른 명령어들이 병렬로 실행하는 형태
- 클러스터(컴퓨터 모아둠), 대칭형 다중 프로세서(공유 메모리 사용, 여러 프로세스가 있는데 성능 동일), 불균일 기억장치 엑세스
암달의 법칙: 프로세서의 수를 늘려도 속도를 개선하는 데 한계가 있다는 주장, 병렬처리 프로세서의 한계를 지적
정보량의 단위
- B -> KB -> MB -> GB -> TB -> PB -> EB
논리회로
부울 함수에서 XOR 연산자는 두 입력 신호 x 또는 y의 논리 신호값의 1의 개수가 홀수일 경우 1이 출력되고, 모두 0으로 입력되거나 1로 입력되는 개수가 짝수일 경우 0이 출력한다.
sol) XOR 연산자에서 0이 나와야 하기 때문에 3번이다.
YZ가 1, 1이면 1이 짝수 개로 0을 출력한다.
0과 0을 OR 연산하면 0이 출력된다.
2의 보수
1의 보수를 구해서 +1 해준다.
문자 표현
- 아스키코드: 7비트
- BCD: 6비트
- EBCDIC: 8비트
- 유니코드: 8비트 및 16비트
역 페이지 테이블
물리 메모리의 프레임당 단 한 개의 페이지 테이블 항목을 할당함으로써 페이지 테이블이 차지하는 공간을 줄이는 기술
- 탐색 속도 매우 느림
- 그래서 해시 역 페이지 테이블을 이용해야 한다.
표본화
시간적으로 연속적인 아날로그 신호에 대해 일정한 시간 간격으로 아날로그 신호 값을 추출하는 과정 (대표 값을 뽑아서)
양자화
10진수로 반올림
부호화
2진수
📌 Reference
'Computer Science > CS' 카테고리의 다른 글
[전산 공부] 데이터 통신 (0) | 2024.02.02 |
---|---|
[전산 공부] 자료구조 (0) | 2024.01.27 |
[알고리즘] 최소 공통 조상(LCA) 알고리즘 (0) | 2023.12.10 |
[자료구조] hashing, hash function, map, hash table, hash set | 종합 선물 세트..? (2) | 2023.04.18 |
댓글