[ 컴퓨터 구조 ] 10. Pipeline 적용

2023. 7. 6. 13:30·2학년 2학기/컴퓨터 구조
728x90
반응형

Basic Steps of Execution of Pipeline

 

  1. Instruction Fetch (IF)

  2. Instruction decode / Register Fetch (ID)

  3. Execution / Effective address (EX)

  4. Memory access (MEM)

  5. Register write-back (WB)

Multiple에서 : 위 작업을 하는 데 걸리는 시간이 [  5 CLK * 개수 ] 였음

Pipeline에서 : 첫 번째 수행하는 놈이 1번을 끝내고 2번으로 갔다 → 두 번째 놈이 1번으로 들어감 (돌림노래 한다고 생각하면 됨) 

더하기 > LW > 곱하기 연산을 하는 작업


위 실행은 Pipeline이 X일 때의 모습이고


아래 실행은 Pipeline으로 실행했을 때의 모습이다.  
+ADD인 경우에 3단계로 끝나기 때문에 4단계가 딱히 돌아갈 이유가 없다.
  따라서, 노란색같은 부분은 돌아가지 않는 걸 뜻한다.

 


 

  Single Cycle : Multiple Cycle : Pipeline 비교

 

 


●   Pipeline하기 좋은 이유 → [ 실행 시간이 예측 가능 ]

  1. 모든 명령어의 길이가 같다. → 모든 명령어가 32비트로 통일되어 있기 때문에 (애초에 다른 비트를 배우질 않았음)
    → 32 비트로 같기 때문에 Instruction Fetch (IF) 에서 걸리는 시간이 항상 같다.
    ex) 어떤 명령어는 32비트, 어떤 건 64, 어떤 건 16 이런 식이면 IF에서의 시간을 고정할 수가 없음

  2. 명령어가 format이 많지 않다. (5개 밖에 안 되어서?(질문하기) ) 
    → 명령어를 Decoding 하는데 걸리는 시간이 얼마 안 걸린다.

  3. Memory 에 접근하는 건 Load 와 Store 만 있다.
    만약 Memory에 접근하는 명령어들이 여러 가지 더 생기게 된다면 실행하는 데 걸리는 시간을 보장할 수가 없다.
    (중간 단계들이 더 생길 것이기 때문에)



●    Pipeline하기 어렵게 만드는 요소들

  1. Structure hazards : Memory 가 하나만 있는 경우
    → Instruction memory, Data memory  두 개가 합쳐져 하나로 있다고 하면 Pipeline을 하기가 힘들다.
    이유 : IF에서 메모리에 access + MEM 단계에서도 메모리에 Access
           이 상황은 돌림노래에 도돌이표가 있어 같은 구간을 부르는 두 사람(혹은 그 이상)이 생기는 느낌임.
           이 때문에 Instruction memory, Data memory를 나누어서 사용함
  2. Data hazards : Instruction 간의 Dependency가 있는 경우
    ex) 해당 Instruction을 실행하기 위해서는 이전 Instruction의 결과를 받아야 할 때

    Pipeline은 이전 명령어가 끝나기 전에 그 다음 명령어를 실행하는 것인데
    이전 명령어가 끝나야 다음 명령어가 실행되는 조건이 있는 경우에는 Pipeline을 하기가 어렵다.

  3. Control hazards : 원래 명령어의 순서가 아니라 BEQ나 JUMP를 만나 멀리 떨어진 명령어로 넘어가는 경우
    ex) 단체 줄넘기를 할 때, 내가 들어가려고 리듬타고 출발하는데
           갑자기 내 다음다음 애가 후다닥 뛰어들어가는 상황.

    정확히는 미리 내가 비집고 들어가서 작업중인데 순서 바뀌었으니 넌 작업 안 해도 된다. 너 다음다음 애로 바뀌었다. 하는 상황


 

 

X축 : 1CLK당 수행하는 명령어의 개수/ Y축 : CLK 주기 (fater : 짧다)

 

  • Single    : 한 CLK에 할 거 다 할 수 있도록 모든 명령어들을 때려 박음. 
  • Multiple  : 한 CLK에 한 작업씩 나누어서 하도록 쪼개놓음
  • Pipeline :  Multiple 요소에서 다른 작업들과 동시에 작업 가능.


 

  • Single    : 하드웨어 공유  X
  • Multiple  : ALU Memory 이런 거 같이 씀, 대신 Register 가 늘어남.
  • Pipeline :  하드웨어 공유하다가 hazard 생길 수도 있음.

 

 

 

참고 : https://luv-n-interest.tistory.com/993

출처 : 한동대 SW 중심대학

반응형

'2학년 2학기 > 컴퓨터 구조' 카테고리의 다른 글

[ 컴퓨터 구조 ] 12. Pipeline 제어부 (Control)  (0) 2023.07.07
[ 컴퓨터 구조 ] 11. Pipeline DataPath  (1) 2023.07.06
[ 컴퓨터 구조 ] 9. Pipeline  (1) 2023.07.05
[ 컴퓨터 구조 ] 8. (Multiple Cycle) Multiple Cycle 제어부 (Control Unit)  (1) 2023.07.05
[ 컴퓨터 구조 ] 7. (Multiple Cycle) 명령어별 Multiple Cycle 실행  (0) 2023.07.05
'2학년 2학기/컴퓨터 구조' 카테고리의 다른 글
  • [ 컴퓨터 구조 ] 12. Pipeline 제어부 (Control)
  • [ 컴퓨터 구조 ] 11. Pipeline DataPath
  • [ 컴퓨터 구조 ] 9. Pipeline
  • [ 컴퓨터 구조 ] 8. (Multiple Cycle) Multiple Cycle 제어부 (Control Unit)
쫑알bot
쫑알bot
주로 복습 / Translator
  • 쫑알bot
    오래 못 할 짓 하지 않기
    쫑알bot
  • 전체
    오늘
    어제
    • 전체 (804)
      • 취약점 분석 (12) N
        • AI 다루기 (8)
        • 분석 (1) N
      • 보안 및 모의해킹 (143)
        • CTF (Capture The Flag) (91)
        • 사례_솔루션 (7)
        • 개발자라면 (4)
        • 정보보안기사 (8)
        • 악성코드 분석 (29)
      • Security Tool Making (29)
        • Exploit 자동화 ( Automated Exp.. (14)
        • NLP based Deobfuscator (15)
      • 4학년 (144)
        • 알고리즘 문제풀이 (81)
        • 캡스톤 (Capstone) (14)
        • 데이터 과학 ( Data Science ) (18)
        • IoT 실습 (15)
        • Computer Vision (15)
        • 공학윤리 (1)
      • 사진 (14)
        • [1] 빈티지 카메라 (14)
      • 3학년 2학기 (85)
        • 네트워크 (Network) (49)
        • 컴퓨터 보안(Computer Security) (21)
        • 암호학(Cryptography) (6)
        • [ 학회 ] 금융ㆍ경제 (9)
      • 공부 외 (77)
        • 기록 (18)
        • 영화 (16)
        • 조향사 (9)
        • 책 (34)
      • 3학년 1학기 (106)
        • 운영체제 (OS) (48)
        • 데이터베이스(DB) (30)
        • 알고리즘 (Algorithm) (28)
      • 프로젝트 (0)
        • 멋쟁이 사자처럼 (0)
      • 웹 보안 (5)
        • 웹 개발자가 알아야하는 보안 기초 (4)
      • 2학년 2학기 (95)
        • 컴퓨터 구조 (49)
        • 웹서비스 제작 (11)
        • 기독교 변증학 (15)
        • 이산수학 (20)
      • 2학년 1학기 (67)
        • 데이터 구조 ( Data structure ) (22)
        • 논리 설계 ( Logic design ) (26)
        • 오픈소스 소프트웨어 ( OSS ) (12)
        • JAVA (7)
      • 혼자하기 (21)
        • 웹 프로젝트 1) 뉴스 (5)
        • React (4)
        • 연습 1) OAuth (12)
      • 별 용도없음 (0)
        • 과제 중간단계 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    윈도우
    AI
    후킹
    PE_File
    해킹
    모델튜닝
    분석
    ollama
    스택
    다이나믹프로그래밍
    보안
    LangChain
    DP
    티스토리챌린지
    Claude
    백준
    알고리즘
    악성코드분석
    디버기
    코딩테스트
    오블완
    리버싱
    MCP
    보안분석
    어셈블리어
    뉴스요약
    LLM
    DLL
    악성코드
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
쫑알bot
[ 컴퓨터 구조 ] 10. Pipeline 적용
상단으로

티스토리툴바