본문 바로가기

학교/컴퓨터 구조

(17)
6. 파이프라인 (2/4) 해저드 파이프라인은 이론상 M단계 파이프라이닝을 도입하면 M배의 성능 향상을 생각하겠지만, 실제로는 이런 저런 이유로 성능이 크게 떨어진다. 해저드엔 3가지가 있다. 1. 구조적 해저드 2. 데이터 해저드 3. 명령어 해저드 해저드를 없애기 위해서는, 파이프라인에 명령어 투입을 멈춰야 한다. 이를 파이프라인 중지 또는 파이프라인 버블(NOP Sled) 이라고 한다. 하지만, 파이프라인 버블이 많아지면, 성능 향상이 크게 떨어지기 때문에, S/W구현에선, 컴파일러의 도움으로 명령어 순서를 변경하거나, H/W구현에선 파이프라인을 다시 설계하거나 자원을 추가한다. 구조적 해저드 실행 중인 2개 이상의 명령어가 동일한 하드웨어 자원을 동시에 요구하는 문제 EX) LOAD명령과 다른 여러 명령어들을 실행하는 과정에서, ..
6. 파이프라인 (1/4) 개요 명령어의 데이터 경로를 세분화해, 각기 다른 세부 단계를 동시 수행해, 여러 명령어 중첩 실행 파이프라인의 깊이(depth) : 단계의 개수 (Ex 세탁-탈수-건조 3개의 작업이면, 파이프라인 깊이는 3) 단계를 더 쪼개면, 깊이는 증가하지만, 지연 시간을 더 줄일 수 있다. 사진에서 위의 작업은 한 사람이 다 끝내야 다른 사람이 쓸 수 있는 순차 방식이고, 밑의 작업은, 한 사람이 세탁기를 돌리는 동안, 다른 사람이 놀고있는 탈수기, 건조기를 쓰는 파이프라인 방식이다. 시간으로 비교해 보자면 위의 순차 방식은 90분 * 4 = 360분이 나오지만, 밑의 방식은 초기 90분 + 가장 느린 작업 40분 * 3 = 210분이 나온다. 이는 순차 방식에 비해 약 1.7배가 빠르고, 작업량이 많아질수록 효율이 ..
5. 데이터 경로 (4/4) 예제 보호되어 있는 글입니다.
5. 데이터 경로 (3/4) 다중 사이클 방식의 명령어 실행 보호되어 있는 글입니다.
5. 데이터 경로 (2/4) 단일 사이클 방식의 명령어 실행 보호되어 있는 글입니다.
5. 데이터 경로 (1/4) 개요 보호되어 있는 글입니다.
4. 명령어 집합 (2/2) 주소 지정 방식 컴퓨터에서 연산을 수행하려면 필요한 데이터의 위치를 알아야 한다. 그리고 데이터를 저장하는 공간은 메모리, 레지스터 등 다양하다 명령어의 피연산자 필드와 데이터의 실제위치의 관계식은 이걸 사용한다. R = 피연산자 필드가 명시하는 레지스터 주소 A = 피연산자 필드가 명시하는 메모리 주소 EA = 참조되는 데이터를 포함하는 장소의 실제 주소, 즉 유효 주소 Reg[x] = 레지스터 x의 내용 M[x] = 메모리 x번지의 내용 0-단계 주소 지정 방식 데이터가 있는 위치를 파악하기 위한 특별한 과정이 없어서, 데이터의 유효 주소를 명시하지 않는다. 즉치 주소 지정과, 묵시 주소 지정으로 나뉜다. 1. 즉치 주소 지정(immediate addressing mode) 상수 주소 지정, 즉석 주소 지정 등으로 ..
3. 컴퓨터의 성능 (4/4) 트래픽 계산 가상의 명령어를 실행하는데 몇 바이트가 드는지 계산해본다. 가산기, 레지스터 등 CPU 내부에 기억장치가 없는 메모리 - 메모리 컴퓨터 구조이다. 모든 데이터가 CPU를 경유해 메모리로 전송되기 때문에, 명령어의 피연산자 필드엔 메모리 전체 주소를 명시해야 한다. 메모리-메모리 컴퓨터 구성은 다음과 같다. 연산 부호 8비트, 즉 1바이트 연산마다 최대 2개의 피연산자 첫 번째 피연산자는, 목적지 겸용 (Z = Z + X) 메모리 주소는 16비트, 즉 2바이트 데이터 크기는 32비트, 즉 4바이트 (1워드) 명령어는 2^8개인 256개이고, 데이터는 2^32의 수를 다룰 수 있고, 메모리는 2^16워드 용량의 메모리 사용 가능 다음과 같은 명령어 집합이 있다 하자. MOV y, a MUL y, x MUL ..