본문 바로가기

학교공부/컴퓨터구조

(18)
컴퓨터구조 13 - Branch Prediction 오늘도 즐거운 branch 개선시간~ 저번시간에 Global branch history 와 BTB를 이용하여 branch의 성능을 향상 시키는 법을 배웠음. 근데 여기도 문제가 있는데... 만약 Branch P에서와 Q에서의 패턴이 동일하다고 하자 근데 P는 taken이고 Q는 not taken이면 동일한 PHT를 계속 update하니까 예측 성공률 떨어짐 또 보면 패턴이 골고로 퍼져있는게아니라 특정 패턴에 좀 몰려있는 성향이 있음. 그러면 특정 패턴에 대한 기억을 하나밖에못하니까 global hitory 특징을 못살린다. 해결방법 기억하는 패턴의 bit를 늘리면 되지 않을까? -> 1bit만 늘려줘도 table크기는 두배가 됨. cpu 용량이나 가격한계? 암튼 불가능. branch filtering을 ..
컴퓨터구조 12 - Branch Prediction 근데 우리는 명령어가 언제 Branch인지 알 수 있을까? 첫 클락에서는 명령어가 뭔지 모른다. IR들어갈 때 쯤 알 수 있다. branch는 뭐가 문제일까? branch 하나 생기면 pipeline stage만큼 stall해야되는데 성능 개박살남 ㅇㅇ Branch 해결 방법 branch를 해결하는 여러 방법중에 prediction에 대해 배워볼거다 branch를 제대로 예측하기 위해서는 3가지를 알아야한다. 지금 fetch한 명령어가 branch냐 아니냐 branch direction (condition이 만족했냐 아니냐) 만약 condition을 만족했다면 어디로가느냐 A. 간단한 prediction은 그냥 무조건 맞다고 하는거. 사실상 PC+4로 위에서 말했듯이 성능이 박살난다. B. 요 밑에 BT..
컴퓨터구조 10,11 - Pipeline Hazards 전에 배운 singlecycle에 pipeline을 더해서 성능을 획기적으로 상승시킴. 근데 이러면 여러문제가 발생한다. pipeline hazard에는 크게 3가지가 있다. Structural hazard : HW는 하나인데 같은 cycle에 두개의 명령어가 쓸라고함 Data hazard : 두개의 명령어가 같은 storage에 접근 : 명령어가 정순서로 뽑아질때 나옴 Control hazard : 한 명령어가 다음 명령어에 영향을 끼친다. 말로보는거보다 직접 봐보자 Structural Hazards Structural Hazard는 ALU나 Memory에 자주 발생한다. 위의 그림처럼 동시에 접근하거나 아님 Floating 연산같이 ALU가 몇사이클 걸리는거는 pipeline이 늘어지면서 문제발생간단..
컴퓨터구조 9 - Pipeline pipeline이란 무엇인가 저번에 배운 single cycle 근데 이럼 개손해임 쪼개서 시간낭비 없이 쓰게하는게 pipeline의 목적이다. A B C D 각각 시간은 같지만 전체시간은 줄어든다 성능 up 근데 이렇게 쪼개는 기준은 제일 큰 pipe에 따라 결정됨. 여기서는 dry(파란색기계)가 40분이니까 40분기준으로 쪼개진다. 따라서 전체시간을 줄일라면 dry의 시간을 줄이는게 중요하다(다른거좀 늘리더라도) Basic Pipeline For MIPS 각각에 pipeline buffer register을 둬서 각각 진행되게한다. 근데 이러면 Write Back할 때 문제가 발생한다. Write-Back할라고 Registers에 가니까 이미 다른 애들이 작업중일 수 있음. 따라서 write regi..
컴퓨터구조 SingleCycle 여담 ISA란 instruction set architecture임 ISA 유형에는 CISC RISC 등등 ISA 종류에는 MIPS ARM x86 등등 ISA 통해 기계어 - HW 연결 ISA에서 명령어 정할때 고려사항 : high level 기능 다 구현할 수 있나? 적은 명령어로 효율적으로 hw에서 돌아가는가 등 Single Cycle Single Cycle이란 한 clock당 하나의 명령어를 해결하는 환경 명령어 다 구현할수있는 processor는 너무 복잡하니까 이것만 돌아가는 걸로 배워본다. 또 모든 명령어는 같은 시간이 걸릴거라고 가정함 ㅇㅇ 먼저 사전 지식을 배워보자 Computers are sate machines 컴퓨터는 상태기계다 각각의 레지스터, 메모리, 디스크 등등은 상태를 가지고 ..
컴퓨터구조 MIPS - 2 MIPS Register 역할이 나눠져있다 Procedures 절차적으로 함수나 인터렙트 콜이 진행될라면 register들의 값이 유지되어야됨 따라서 함수콜와서 딴데가도 지금하던거(레지스터)를 다른데다 잘 저장해 놔야한다. 딴 데 갈 때는 빈 레지스터를 준다. 이 작업을 수행하기 위해서 저번시간에 적은 JAL을 사용한다 Jump-and-Link로 31번 레지스터에 address counting하는 방식으로 진행된다. 함수콜오면 $ra에 current PC(actually PC+4)를 넣고 다시 돌아올 때 쓴다. 그럼 요것들을 어디 저장해놓냐? stack memory에 차곡차곡 쌓아논다. Proc A에서 B로갈때 A의 레지스터들 다 stack 형태로 메모리에 넣어놓고 빈상태의 레지스터를 Proc B에 준다..
컴퓨터구조 MIPS Compiler : Source program을 Target program으로 변경 보통 c++ java phython과 같은 high level language를 x86 MIPS ARM SPARC 와 같은 기계어로 변역함 설명은 귀찮아서 패스 Registers : 메모리부터 fetch 해온 data stored. cpu는 register하고만 연산 word : 계싼하는 data의 default size 빠르게 MIPS 명령어를 보자 MIPS Instruction Format 32bit 시스템에서임 address = constant 상수가 들어옴 address에 memory address가 와서 번지로 이동함. MIPS Instruction (refererence) 중요한것만 빠르게 본다. http://..
컴퓨터구조 Performance 성능을 측정하는 지표에는 두가지가 있다 Response time (Latency) : time elapsed betwwen start and end of a program, 새로운 일이 주어지면 반응하는 시시간, 응답시간 // 엄밀히 따지면 response time과 latency를 구분하는데 비슷한 개념 Throughput : 정해진 시간동안 하는 일 latency 느려봐야 한 두 클락 손해 -> 영향없음 보통 latency보다 throughput 향상에 초점을 맞춘다. 성능 cpu 실행시간 클락 speed가 1GHz라면 1초에 1GB만큼 이동한다는 뜻. 문제 -> 30billion clock 1초에 1.5billion인데 2만큼 가야되니까 실행시간은 1.3333333초 실행시간 CPI : Instru..