2009.08.27 22:23


다음 명령어가 다음 클럭 사이클에 실행될 수 없는 상황을 말한다.

 

  Structural Hazard : 한 모듈에 2개가 접근을 시도하는 경우 발생하는 문제

-> 하드웨어가 여러 명령들을 수행을 지원하지 않기 때문에 발생, 자원충돌(resource conflicts)

-> 같은 클럭 사이클에 실행하기를 원하는 명령어들을 하드웨어가 지원할수 없다는 것을 의미

 

문제가 발생한 모듈을 2개로 설계하여 해결하거나, 한 개의 명령의 수행을 지연시킨다.

 

 한 하드웨어 자원을 두 개의 명령어가 동시에 사용하려고 할 때

 

  Data Hazard :   branch 또는 jump 명령으로 PC값의 수정하여 파이프라인이 재설정되어 발생하는 문제

-> 명령이 현재 파이프라인에서 수행 중인 이전명령의 결과에 종속되는 경우 발생

-> 명령어가 아직 파이프라인에 있는 앞선 명령어의 결과에 의존하는 것을 말한다

 Delayed Branch, (1-bit, 2-bit, history-based) Branch Predictor를 이용하여 예측 성공 확률을 증가시켜서 hazard를 감소시킨다.

 

 pipeline안에서 아직 연산이 완료되지 않은 결과를 뒤에 따르는 연산이 사용하려고 할때..

  연산 결과를 레지스터에 쓰기 전에 pipeline의 이전 단계로 미리 보내는 방법 (Data forwarding)

 

  Control Harzard : WAR (write after read) WAW (write after write) RAW (read after write) Data dependency에 의해 발생

-> 분기 명령어에 의해 발생

-> 다른 명령어들이 실행중에 한 명령어의 결과값에 기반을 둔 결정을 할 필요가 있을 때 일어난다.

-> 비교 연산후 jump를 해야 할때 다음 Instruction을 곧장 다음 Clock cycle에 결정하지 못해서 생기는 현상

Hazard Detection & Data Forwarding으로 해결하거나, 뒤에 따라오는 명령의 수행을 지연시킨다.

'전공관련 > 용어정리' 카테고리의 다른 글

Vector Processor  (0) 2009.08.27
Superscalar  (0) 2009.08.27
Pipeline hazard  (1) 2009.08.27
Pipeline  (0) 2009.08.27
ISA (Instruction Set Architecture)  (0) 2009.08.27
마구잡이로 적었었던 간단 용어 정리  (0) 2009.08.27
Posted by Master Master.홈즈

댓글을 달아 주세요

  1. 훈남 2012.07.17 09:57 신고  댓글주소  수정/삭제  댓글쓰기

    Data hazards랑 control hazards가 반대로 설명된거 같군요