728x90
9.1 병렬 처리
- 동시 데이터 처리 기능을 제공하는 광범위한 개념의 기술
- SISD(단일 명령어 스트림, 단일 데이터 스트림): 기존의 단일 프로세서 컴퓨터와 유사하며, 일부 내부 병렬 처리가 포함될 수 있다.
- SIMD(단일 명령어 스트림, 다중 데이터 스트림): 여러 프로세서가 동일한 명령을 실행하면서 각기 다른 데이터를 처리하는 방식이다.
- MISD(다중 명령어 스트림, 단일 데이터 스트림): 이론적인 개념일 뿐 실제 구현된 사례는 없다.
- MIMD(다중 명령어 스트림, 다중 데이터 스트림): 여러 프로그램을 동시에 실행할 수 있는 다중 프로세서 및 다중 컴퓨터 시스템이 포함된다.
9.2 파이프 라인
- 하나의 프로세서를 서로 다른 기능을 가진 여러 개의 서브 프로세서로 나누어 각 서브 프로세서가 동시에 서로 다른 데이터를 취급하도록 하는 기법
Ai * Bi + Ci 연산 수행하는 파이프라인의 처리
- R1 ← Ai, R2 ← Bi Ai와 Bi의 입력
- R3 ← R1 * R2, R4 ← Ci 곱셈과 Ci의 입력
- RS ← R3 + R4 곱셈 결과와 Ci의 덧셈
일반적인 고찰
- k 세그먼트 파이프라인에서 n 태스크를 완료하려면 k + (n - 1) 클럭 사이클이 필요하다.
- 위 표의 6개의 태스크가 모두 완료 되기 위해선 4 + (6 - 1) = 9 클럭 사이클이 필요
- tn: 각 태스크를 완료하기 위해 걸리는 시간
- Ntn: 태스크에 대한 전체 수행 시간
- tp: 클럭 사이클 시간
※ 이론적 최대 속도 증가율은 파이프라인의 세그만트수(k)와 같다.
9.3 산술 파이프라인
부동소수점 덧셈 및 뺄셈 파이프라인
두 개의 정규화된 부동소수점 수 X=A×2^a 와 Y=B×2^b가 입력된다.
연산 과정은 다음 4단계로 이루어진다.
- 지수 비교: 두 지수를 뺀 차이를 구하여 큰 지수를 결과의 지수로 선택한다.
- 가수 정렬: 작은 지수를 가진 가수를 오른쪽으로 이동시켜 정렬한다.
- 가수 연산: 정렬된 가수를 더하거나 뺀다.
- 정규화: 결과 가수를 조정하여 첫 자릿수가 0이 아닌 형태로 만든다.
각 세그먼트의 지연 시간이 t1=60ns, t2=70ns, t3=100ns, t4=80ns이고, 인터페이스 레지스터 지연이 tr=10ns일 때,
- 파이프라인 클록 주기 tp = max(t1,t2,t3,t4) + tr = 110ns
- 비파이프라인 연산 시간 tn = t1 + t2 + t3 + t4 + tr = 320ns
- 속도 향상 = 320/110 = 2.9
9.4 명령어 파이프라인
일반적인 명령어 실행 단계
- 명령어 페치(Fetch): 메모리에서 명령어를 가져옴
- 명령어 디코드(Decode): 명령어 해석
- 유효 주소 계산(Calculate Effective Address): 메모리 접근이 필요한 경우 주소 계산
- 메모리에서 피연산자를 fetch(Fetch Operands): 메모리에서 필요한 데이터 가져옴
- 명령어 실행(Execute): 연산 수행
- 결과 저장(Store Result): 결과를 적절한 위치에 저장
4단계 명령어 파이프라인 예제
명령어 디코드와 유효 주소 계산을 하나의 세그먼트로, 실행과 저장 단계를 하나로 통합하면 4단계 파이프라인을 구성
- 네 세그먼트 파이프라인을 가진 CPU에서 명령어 사이클이 수행되는 과정
- FI (Fetch Instruction): 명령어를 메모리에서 읽음
- DA (Decode & Address Calculation): 명령어 해석 및 유효 주소 계산
- FO (Fetch Operand): 메모리에서 오퍼랜드 가져옴
- EX (Execute Instruction): 명령어 실행
명령어 파이프라인이 정상적인 동작에서 벗어나게 하는 원인
1. 자원 충돌(Resource Conflicts)
- 두 개의 세그먼트가 동시에 메모리에 접근하려고 하면 충돌 발생
- 해결 방법: 명령어 메모리와 데이터 메모리를 분리하여 독립적으로 접근 가능하도록 설계
2. 데이터 의존성(Data Dependency)
- 후속 명령어가 이전 명령어의 결과값을 필요로 하는 경우 실행이 지연됨
- 해결 방법:
- 하드웨어 인터록(Hardware Interlock): 충돌을 감지하여 필요한 만큼 대기
- 오퍼랜드 전달(Operand Forwarding): ALU 결과를 레지스터에 저장하지 않고 직접 다음 연산에 전달
- 지연 로드(Delayed Load): 컴파일러가 명령어를 재배열하여 데이터 충돌 방지
3. 분기 문제(Branch Hazards)
- 조건 분기(Conditional Branch)는 파이프라인을 중단시키고, 새로운 경로의 명령어를 가져와야 함
- 해결 방법:
- 분기 예측(Branch Prediction): 분기 결과를 미리 예측하여 예상되는 명령어를 가져옴
- 분기 타겟 버퍼(BTB, Branch Target Buffer): 이전 분기 정보를 저장하고 활용하여 성능 저하 방지
- 루프 버퍼(Loop Buffer): 반복문(loop)을 메모리 접근 없이 고속으로 실행
- 지연 분기(Delayed Branch): 컴파일러가 분기 후 실행 가능한 명령어를 삽입하여 중단 없이 연속 실행
728x90
반응형
'Mano의 컴퓨터시스템구조' 카테고리의 다른 글
[mano의 컴퓨터시스템 구조] 8장 중앙 처리 장치 (1) | 2025.01.18 |
---|---|
[mano의 컴퓨터시스템 구조] 7장 마이크로 프로그램된 제어 (0) | 2025.01.05 |
[mano의 컴퓨터시스템 구조] 6장 기본 컴퓨터 프로그래밍 (1) | 2024.12.16 |
[mano의 컴퓨터시스템 구조] 5장 기본 컴퓨터의 구조와 설계 (0) | 2024.11.27 |
[mano의 컴퓨터시스템 구조] 4장 레지스터 전송과 마이크로 연산 (0) | 2024.11.21 |