전자전기공학/컴퓨터구조 16

[컴퓨터구조][Cache Coherence]

[컴퓨터구조][Cache]CPU의 구조에 대해서 배웠을 때, Instruction memory와 Data memory가 있었던 것을 기억하실 거에요.  Instruction memory와 Data memory는 실제로 Cache memory를 사용합니다. Cache memory를 사용하는 이유는, 메모리monkey-engineer.tistory.com cache에 대해서 잘 모르신다면, 이전에 작성한 Cache 포스팅을 읽고 오시면 도움이 됩니다.       일반적으로 정보를 가지러 Main memory에 접근해야 하지만, 이 경우 overhead가 많이 듭니다.그 이유는 메모리의 계층구조에서 알 수 있듯이 Main Meomory에 접근하기 위해서 많은 Clock이 소요되기 때문입니다.  이 문제를 해결..

[컴퓨터 구조][Out of order]

[컴퓨터 구조][Parallel]컴퓨터 구조에서 병렬처리는 여러 프로세서를 연결하여 성능을 향상시키는 것으로Scalability(확장성)을 확보하며, 전력 효율성을 높이기 위해서 사용됩니다.  컴퓨터 구조에서 병렬처리에는 ILP,monkey-engineer.tistory.com     지난 포스팅을 보시면, Parallel에 대해서 알아보며 ILP, DLP, TLP에 대해서 알아봤었습니다. 결국에는 "병렬로 수행해서 성능을 향상시키기 위해서라는 것"이라는 공통의 목표로 병렬성을 증가시킨 것 입니다.  지난 시간에 ILP에 대해서 배우며 그 예시로, 기존에 배웠던 것에서는 Pipelining과 Branch predictor, Hazard detector등을 이용하면 CPI가 줄일 수 있기 때문에 전체적인 ..

[컴퓨터 구조][Parallel]

컴퓨터 구조에서 병렬처리는 여러 프로세서를 연결하여 성능을 향상시키는 것으로Scalability(확장성)을 확보하며, 전력 효율성을 높이기 위해서 사용됩니다.  컴퓨터 구조에서 병렬처리에는 ILP, DLP, TLP라는 세 가지 주요 용어가 있습니다.     ILP(Instruction Level Parallelism)     ILP는 Instruction level parallelism으로 단일 프로그램 내에서독립적인 명령어들을 병렬로 실행함으로써 성능을 향상시키는 기술입니다. ILP에 사용되는 주요 기술에는 이전에 저희가 많이 배웠던 Pipelining이 있고,다음 시간에 배울 Out of order Execution과 Superscalar가 있습니다.또한 branch predictor와 hazard ..

[컴퓨터구조][virtual memory]

지난 시간에 이어서 virtual memory에 대해서 알아보도록 하겠습니다.    그렇다면 굳이 virtual memory에 사용되는 복잡한 개념을 이용해 가면서 사용하는 것 일까요? virtual memory는 물리 메모리의 한계를 극복하고 효율적인 메모리 관리를 위해서 사용됩니다. 물리 메모리는 제한된 자원으로 크기가 정해져 있습니다. 하지만 저희가 게임을 하더라도 많은 용량을 필요하게 됨으로물리 메모리의 제한된 자원을 다 사용하더라도 부족할 수 있습니다. 이처럼 프로그램을 사용할 때 부족한 메모리의 제한을 없애고 큰 프로그램을 사용하기 위해서 virtual memory를 사용합니다. 또한 여러가지 이유가 있지만 그 중에서 메모리 단편화를 해결하기도 합니다.물리 메모리에 연속적으로 공간을 할당하다보..

[컴퓨터구조][cache#2]

이전 시간에는 cache의 대략적인 구조인 Direct mapped cache와 n-way set associative에 대해서 배웠었습니다. 간략하게 살펴봤기 때문에 자세한 부분을 더 다뤄야 겠다는 생각으로 다시 글을 작성해보려고 합니다. 이전의 포스팅을 보고 전체적인 부분을 둘러보시고 이 포스팅을 보시면 이해하기가 쉬우실 거라고 생각합니다.     cache에는 Direct mapped / n-way set associative / fully associative cache가 있습니다.   이전 시간에 이야기 했던 것 처럼 Hard Disk 또는 RAM은 접근(Access)속도가 느리기 때문에 cache를 사용합니다. 간략한 예로, CPU의 구조를 배울 때, Instruction 및 Data memo..

[컴퓨터구조][Cache]

CPU의 구조에 대해서 배웠을 때, Instruction memory와 Data memory가 있었던 것을 기억하실 거에요.  Instruction memory와 Data memory는 실제로 Cache memory를 사용합니다. Cache memory를 사용하는 이유는, 메모리 계층 구조를 보시면 알 수 있습니다.    맨 위를 기준으로 Register가 있고, 아래로 가면서 Memory의 크기는 커지지만 Access 속도가 느려집니다. 이런 이유로 Cache memory를 이용해 RAM(주로 memory라고 하면 RAM을 지칭합니다.)의 일부 자주 사용되는 데이터를Cache에 두고 빠르게 접근하고 사용하기 위해서 입니다. 즉, CPU의 효율을 올리기 위해서 사용한다고 볼 수 있습니다.  그렇다면 RA..

[컴퓨터구조][Hazards #2 Control Hazard]

안녕하세요, 지난 시간에 이어서 Control Hazard에 대해서 알아보도록 하겠습니다.     Control Hazard는 파이프라인 구조에서 분기 명령어나 조건부 명령어의 결과가 결정되기 전까지다음에 실행할 명령어를 예측할 수 없는 상황에 발생하는 문제를 의미합니다.  쉽게 말해서, CBZ와 같은 분기 명령어를 만났을 때, CBZ가 가르키는 주소로 분기를 하게 되고 파이프라인은잘못된 명령어를 fetch하게 되면서 파이프라인의 성능을 저하시킬 수 있습니다.  파이프라인의 성능 저하의 예를 들자면, pipeline stall이나 Mispredicted Branch(잘못된 분기 예측)으로 인해서분기 명령어의 결과가 결정되기 전까지 파이프라인을 대기시키거나, 이미 가져온 명령어들을 Flush하기 때문에사이..

[컴퓨터구조][Hazards #1 Data Hazard]

안녕하세요, 이번에는 CPU에서 특정 상황에 대해서 발생하는 Hazards에 대해서 알아보겠습니다. 우선 Hazard는 총 세가지 종류가 있는데요, Structure hazards, Data hazards, Control hazards가 있습니다.       1. Structure hazard    Structure hazard는 access하려고 하는 하드웨어가 바쁘게 수행중일 때 발생합니다. 하드웨어를 늘리면 해결이 가능하지만,    하드웨어를 늘림에 따라서 발생하는 전력소모 등 Trade off가 발생한다는 것은 인지하고 계셔야합니다. 2. Data hazard    쉽게 이야기해서, 첫 명령어가 ADD이고 두번째 명령어가 SUB이라고 할 때, ADD의 destination register를 SUB..

[컴퓨터구조][CPU#3 Pipelining기본]

안녕하세요, 지난 시간에 이어서 CPU의 Pipelining(파이프라이닝)에 대해서 배워보도록 하겠습니다.    우선 파이프라이닝에 대한 개념을 우선 배워보도록 하겠습니다.아래의 그림은 파이프라이닝에 대한 예시 그림입니다.       파이프라이닝은 작업을 여러 단계로 나누고, 각 단계가 동시에 실행되도록 하는 방식입니다. 쉽게 이야기해서 쉬는 곳이 없도록 모두 일을 지속적으로 실행할 수 있도록 하는 것 입니다. 여기서 파이프라이닝을 Latency(지연 시간)과 Throughput(처리량)을 생각하면 개선 사항을 쉽게 알 수 있습니다. Latency는 하나의 작업을 완료하는 데 걸리는 시간입니다. 예를 들어서 아래의 그림처럼 하나의 작업을완료하는 데 걸리는 시간을 의미합니다.         그리고 Thro..

[컴퓨터구조][CPU#2 Single Cycle CPU, Dual Port SRAM]

· 목차  -  Instruction Fetch  - R-Format Instructions   - Load/Store Instruction(D-format Instruction)   - Branch Instruction (CBZ)   - Dual Port SRAM       안녕하세요, 이번 시간에는 CPU의 각 파트가 어떻게 작동되는 것인지 살펴보고 난 이후에 Dual Port SRAM의 Transistor level에서의 구조에 대해서 살펴보고 넘어가도록 하겠습니다.      Instruction Fetch   위는 CPU에서 Instruction Fetch 파트만 따로 떼어온 것 입니다. Instruction Fetch에서 보이는 것중 하나로 Arm Architecture에서 기존에 설명한 것과 ..