환급미션 20일째..
컴퓨터 구조 - 파이프라인과 벡터처리 - Pipeline 구조 - 산술&명령어 파이프 라인 -1
컴퓨터 구조 - 파이프라인과 벡터처리 - Pipeline 구조 - 산술&명령어 파이프 라인 -2
병렬적 다중 기능장치와의 비교를 통한 파이프라인의 필요성에 대한 고찰과
산술 파이프라인과 명령어 파이프라인에 대한 강의이다.
- 현실적 파이프라인 구조
각 segment들이 부연산을 수행하는 시간이 다르고,
각 레지스터를 제어하는 클럭 사이클은 최대 전파시간을 갖는 세그먼트의 지연시간과 싱크를 맞추어야 하기 때문에
실제 파이프라인 구조에서는 앞서 다루었던 이론적인 최대 속도를 구현할 수 없다.
파이프라인 처리 속도와 같게
병렬적인 다중 기능 장치를 고려해보도록 한다.
각 P 회로는 전체 파이프라인 회로에서와 동일하게 task 수행
하지만 pipeline에서처럼 순차적으로 맞물려서 처리가 되는 것이 아니라
모든 회로가 동시에 데이터를 입력받아 4가지의 task를 한 번의 수행한다.
이는 SIMD 구조일 뿐이고
segment로 작업을 나누어서 반복하는 경우에
파이프라인 구조에 비해 비효율적이게 된다.
- 산술 파이프라인 (arithmetic pipeline)
산술 연산들을 부연산으로 나누어 파이프 라인의 각 세그먼트에서 수행
ex) A_i x B_i + C_i
고속 컴퓨터에서 부동 소수점 연산, 고정 소수점 수의 곱셈, 과학계산, 파이프라인 승산기 (배열 승산기 - 부분 곱 사이의 캐리 전파시간의 최소화를 위한 가산기 보유) 등
* 부동 소수점 덧셈과 뺄셈을 위한 파이프라인
( 부동 소수점 : 실수, <-> 고정 소수점)
( 부동 소수점 파이프라인의 구성요소 - 비교기, 시프터, 가산/감산기, 인크리멘터, 디크리멘터 -> 조합회로 )
각 세그먼트에서 수행되는 부 연산
1. 지수의 비교
2. 가수의 정렬
3. 가수의 덧셈/뺄셈
4. 결과의 정규화
위의 flow chart를 살펴보았을 때
( exponent : 지수, mantissa : 가수 )
segment 1 - 지수부인 2,3을 비교한다.
segment 2 - 둘 중 큰 값인 3을 선택한다. / 가수 정렬
segment 3 - 가수 부분을 덧셈/뺄셈
segment 4 - 결과값의 정규화를 진행한다. 이 때 가수부는 0이 된다.
* 산술 파이프라인의 효율성
산술연산에서 파이프라인, 비 파이프라인(serial하게 진행)을 비교했을 때
위의 표와 같이 소요시간의 차이를 확인할 수 있다.
물론 비 파이프라인에서의 계산 역시 소요시간은 찰나이지만,
이러한 결과들이 축적되게 된다면 파이프라인을 사용할 때와의 차이가 점점 벌어지게 될 것이다.
- 명령어 파이프라인 (instruction pipeline)
명령어 사이클의 fetch, 디코드, 실행단계를 중첩시켜 명령어 흐름에 동작
이전 명령어가 다른 세그먼트에서 실행되고 있는 동안 메모리에 연속적으로 저장되어 있는 다음 명령어를 읽어옴으로서
fetch, 실행(execute) 작업이 중첩되어 동시에 수행되는 구조이다.
효율적으로 파이프라인을 구성하기 위해서는
명령어 fetch, 명령어 실행장치로 두 세그먼트 파이프라인을 구성해야도록 고려해야 한다.
* 명령어 fetch 장치
FIFO (first-in-first-out) 에 의한 Que로 구성,
Queuing 기법에 의한 메모리 참조에 의해 평균 메모리 접근 시간을 효과적으로 줄인다.
- 명령어 파이프라인이 수행되는 데 있어 나타나는 애로사항
* 분기가 발생할 경우(가장 큰 취약점)
현재의 파이프라인은 모두 비워져야 하고,
분기명령 이후에 메모리에서 읽어온 명령어는 모두 무시되어야 한다.
* 세그먼트의 수행 시간이 서로 다름
* 실행되지 않는 세그먼트도 있을 수 있음 (ex. 레지스터 모드 명령의 경우 - 유효주소 계산 불필요)
* 두 개 이상의 세그먼트에 의해 동일한 주소 공간이 참조되는 경우
충돌이 일어날 수 있음
deadlock (교착 상태) 발생 가능 - 서로 상대방의 작업이 끝나기만을 기다리며, 결과적으로 아무 일도 일어나지 않는 상태
위의 flow chart에서
segment 1 - memory에서 명령어 불러옴
segment 2 - 명령어 해독, 유효 주소 계산
(분기,branch) - y/n
no->
segment 3 - 메모리로부터 operand 불러옴
segment 4 - 명령어 실행
(interrupt 발생하지 않으면) 다시 segment 1부터 반복
branch 명령에 의해 분기가 발생했을 때의 문제점과
두 개 이상의 세그먼트에 의해 동일한 주소 공간이 참조되는 경우를 보여준다. (EX, FO)
올인원 패키지 : 컴퓨터 공학 전공 필수👉https://bit.ly/3i4sCVE
'패스트캠퍼스' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 올인원 패키지 : 컴퓨터 공학 전공 필수👉C언어인강 100% 환급 챌린지 22회차 미션 (0) | 2020.11.09 |
---|---|
[패스트캠퍼스 수강 후기] 올인원 패키지 : 컴퓨터 공학 전공 필수👉C언어인강 100% 환급 챌린지 21회차 미션 (0) | 2020.11.08 |
[패스트캠퍼스 수강 후기] 올인원 패키지 : 컴퓨터 공학 전공 필수👉C언어인강 100% 환급 챌린지 19회차 미션 (0) | 2020.11.06 |
[패스트캠퍼스 수강 후기] 올인원 패키지 : 컴퓨터 공학 전공 필수👉C언어인강 100% 환급 챌린지 18회차 미션 (0) | 2020.11.05 |
[패스트캠퍼스 수강 후기] 올인원 패키지 : 컴퓨터 공학 전공 필수👉C언어인강 100% 환급 챌린지 17회차 미션 (0) | 2020.11.04 |