학교공부/컴퓨터구조

학교공부/컴퓨터구조

[컴퓨터 구조] VLIW and Superscalar

VLIWvery long instruction word architecture으로 컴파일러가 독립적인 명령어들을 찾아 하나의 VLIW 명령어로 묶는다. 장점:하드웨어 구조가 단순화된다.단점:컴파일러가 매 사이클마다 N개의 독립적인 명령어를 찾아야 한다.독립적인 명령어가 부족할 경우 nop으로 채운다.실행 명령어 개수 변경 시 재컴파일이 필요하다.stall 발생 시 여러 명령어를 동시에 stall 한다.이 아키텍처는 컴파일러 역할이 중요하며, 하드웨어 복잡성을 줄이고 소프트웨어 최적화에 의존한다. .  SuperscalarVLIW가 어떤 instruction을 동시에 처리할지 컴파일러가 정적으로 결정한다면 superscalar는 어떤 instruction을 동시에 처리할지 하드웨어에서 동적으로 결정한다. ..

학교공부/컴퓨터구조

[컴퓨터 구조] A Single Cycle MIPS Processor

Single cycle implementation:한 사이클에 한 명령어를 완전히 실행한다.모든 명령어가 동일한 시간을 소요한다.구현이 간단하지만 성능이 제한적이다.각 하드웨어 단계를 한 명령어에만 사용한다.Pipeline implementation:명령어 실행을 여러 단계로 나누어 처리한다.여러 명령어를 동시에 다른 단계에서 처리한다.전체적인 처리량이 증가한다.하드웨어를 더 효율적으로 사용한다.구현이 복잡하며 파이프라인 해저드 관리가 필요하다.  Instruction fetchInstruction fetch 단계는 다음과 같이 작동한다:Instruction memory에 32비트 명령어가 주소에 맞게 저장되어 있다.PC(Program Counter)가 instruction memory에 명령어 주소를 ..

학교공부/컴퓨터구조

[컴퓨터 구조] Branch prediction

Branch Prediction은 Fetch 단계에서 세 가지를 예측하는 기술이다. 이는 명령어의 branch 여부, branch의 taken/not taken 여부, 그리고 branch의 target address이다.Branch Target Buffer(BTB)는 이전에 taken된 branch의 target address를 저장하는 저장소다. BTB는 현재 명령어가 branch인지 판단하는 데도 사용된다. Branch Prediction은 정적 예측과 동적 예측으로 나뉜다. 정적 예측에는 always not taken, always taken, BTFN, profile based, program analysis based 방식이 있다. 동적 예측에는 Last time prediction, Two-b..

학교공부/컴퓨터구조

[컴퓨터구조] Cache

Cache 컴퓨터 시스템에서 빠른 데이터 엑세스를 위해 사용되는 고속 메모리로 CPU와 메인메모리 사이에 위치한다. 컴퓨터가 실행하는 프로그램은 메인 메모리에 저장되어 있지만 CPU가 메인 메모리에서 데이터를 가져오기까지는 상당한 시간이 걸리기 때문에, 프로그램의 실행속도를 향상시키기 위해 캐시가 도입된 것이다. 만약 우리가 책장에서 책을 가져와 책상 위에서 사용한다고 가정해보자. 하지만 책장에서 매번 책을 가져오기에는 번거롭고 시간도 비교적 오래 걸린다. 그래서 앞으로는 책상 위에 작은 책상용 책꽂이를 마련해 자주 사용하는 책 몇 권을 꽂아두기로 했다. 이렇게 책상용 책꽂이를 사용하게 되면서 우리는 책을 조금 더 빠르고 쉽게 가져올 수 있게 되었다. 여기서 책장은 메인 메모리, 책은 데이터, 책장은 C..

학교공부/컴퓨터구조

[컴퓨터 구조] Memory Hierarchy

Virtual vs Physical memory 프로그래머는 virtual memory만을 보고 있어서 메모리 공간이 거의 무한하다고 느끼지만 실제 사용할 수 있는 physical memory 공간은 프로그래머가 추정하는 것보다 훨씬 작다. 시스템(system softeware + hardware)은 virtual memory와 physical memory를 서로 mapping 해준다. 이때 시스템이 physical memory를 잘 관리해준다면 프로그래머 입장에서는 메모리 공간이 엄청 거대하다고 느끼는 것이다. Memory Hierarchy 이상적인 메모리라 함은 공간이 넓고 빠르며 값싼 메모리일 것이다. 하지만 현실적으로 불가능한 일이다. 공간이 넓으면 데이터의 위치를 특정하는데 오래 걸리기 때문에 ..

학교공부/컴퓨터구조

[컴퓨터 구조] Multithreading

Thread란?Thread는 메모리와 레지스터 상태에 대한 명령어 흐름을 나타내며, CPU가 실행하는 기본 단위이다. Thread가 실행 중일 때, 그 상태는 register states로 표현되며 이를 Thread Context라고 부른다. Thread는 프로그램의 병렬 실행을 가능하게 하며, 현대 프로세서 설계에서 중요한 요소이다.   Multithreading이란?Multithreading은 하나의 프로세서가 여러 Thread Context를 가지는 구조를 말한다. 이를 통해 하나의 프로세서가 여러 작업을 병렬적으로 처리할 수 있다. 이러한 방식은 CPU의 유휴 시간을 줄이고 자원의 활용도를 극대화하여 성능을 향상시킬 수 있다.   Multithreading의 장점Multithreading은 다양한..

학교공부/컴퓨터구조

[컴퓨터 구조] Handling Dependences

컴파일 과정에서부터 data dependeces을 감지하고 nop을 넣어 depenceces를 제거하는 것 data를 write하기 이전에 미리 그 값을 다음 명령어로 전달해주는 방식 다음 명령어로 data를 전달해줄 수 있는 line 만들어 data dependences를 줄인다. 하지만 모든 경우에 적용될 수 있는 것은 아니고 어쩔 수 없이 stall 해줘야 하는 상황이 있을 수 있다. ex) lw 다음에 and 명령어가 올 때 등 그 이전에 하드웨어를 추가로 둬서 branch가 taken인지 not taken인지, taken이라면 어디로 가야하는지를 ALU 이전에 계산하는 방식 장점 - branch를 잘못 예측했을 때의 패널티를 줄일 수 있다 -> CPI가 줄어듬 단점 - clock cycle ti..

학교공부/컴퓨터구조

[컴퓨터 구조] Pipelining

파이프 라인으로 인해 줄일 수 있는 시간은 가장 긴 pipeline state의 영향을 받는다. Pipeline state의 개수가 많아질수록 속도가 빨라질 수 있다. Pipeline state의 시간의 언벨런스 하면 속도가 느려진다. 1. Instruction fetch(IF) - 메모리에서 instruction을 불러와서 instruction register에 저장, pc+4 - IR을 다음 state 전까지 가지고 있음(한 싸이클마다 state가 바뀜) 2. Instruction Decode/Register Fetch Cycle(ID) - Instruction을 디코딩하고 register value를 읽어옴 - 16비트를 확장 - 다음 state 전까지 가지고 기다림 3. ALU Execution(..

학교공부/컴퓨터구조

[컴퓨터 구조] ISA

메모리에 instruction data가 올라오고 cpu는 매 클럭마다 instruction을 수행 컴파일러: high lever language를 다른 언어로 변환(컴파일)하고 그 결과를 목적 파일에 써 놓는 프로그램 인터프리터: 기계어로의 컴파일 과정을 거치지 않고 소스코드를 바로 실행하는 일종의 가상머신 어셈블러: 어셈블리 언어 프로그램을 기계어 프로그램으로 변환함 레지스터 - 레지스터는 메모리에서 가져온 데이터를 저장하는 CPU 내부 스토리지이다. - 한 사이클에 읽거나 쓸 수 있다. - 산술논리 연산자가 동작한다 - MIPS ISA에는 32개의 32bit 레지스터가 존재한다. 각 레지스터는 32개의 플립플롭을 가지고 있다. - 레지스터가 32개인 이유는 레지스터 수가 매우 많으면 단순히 더 멀리..

학교공부/컴퓨터구조

[컴퓨터 구조] Computer Organization/Performance

컴퓨터의 세가지 중요 요소 - computation, communication, storage/memory 성능이 높아질수록 필요한 파워가 늘어나 효율이 좋지 않음 -> 하나의 코어의 성능을 높이기보다는 여러 개의 코어를 사용하는 것으로 바뀜 Performance = 1/execution time Cpu execution time = Cpu clock cycles(required for executing a program) X Clock cycle time Clock cycle time = 1/clock speed Execution time = clock cycle time X instructions X avg CPI(avg clock cycle per instruction) SPEC: System Pe..

DevM
'학교공부/컴퓨터구조' 카테고리의 글 목록