컴퓨터구조

CS/컴퓨터 구조

[컴퓨터 구조] 29. Pipeline MIPS 회로 그리는 과정

1. hazard 고려하지 않은 회로도 내부에 파이프라인 레지스터만 그려두었다. 1. Fetch branch, jump 는 고려하지 않았다. (사실 파이프라인 회로도에서는 점프를 고려하지 않은 회로도만 있다.)PC + 4, 명령어 주소값을 IF/ID 파이프라인 레지스터로 전달한다.(instruction memory는 실수로 뺐다... 맨 뒤에 추가될 예정이다. 원래 이 단계에서 그리는 것이 맞다.) 2. Decode 우선 R-Format만 고려하여 위와 같이 작성하였다.위 부분에서 잘못된 부분이 아직은 많다. 1. RegWrite은 나중에 파이프라인으로 넘겼다가 나중에 받아와야 하고2. write address 는 rd로 받는게 아니라 rd/rt 중에 골라야 하는데3. 이것도 MEM/WB까지 넘겼다가 받..

CS/컴퓨터 구조

[컴퓨터 구조] 27. Virtual Memory (2) - TLB

TLB가상 메모리를 사용할 때 참고하는 page table 이 메모리에 있기 때문에, page를 읽으려고 할 때마다 접근하는 시간이 오래 걸린다. (메모리에 대한 접근을 매우 느리게 만든다.)메모리의 특정 부분에서 데이터를 읽기 위해서 2번의 메모리 접근이 필요한 것이다. 첫번째는 VA를 PA로 변환하기 위해 page table에 접근하면서 1번 메모리에 접근하고,두번째는 이렇게 얻어온 PA를 가지고 데이터/명령어를 읽어오기 위해 메모리에 한번 더 접근한다. 그래서 이 문제를 해결하기 위해 하드웨어 지원을 추가하는 방법을 고민했다.page table에 대한 접근은 그래도 spatial locality가 꽤 좋다.명령어의 크기가 4byte인 것에 비해 4KB라는 페이지 크기는 매우 넉넉해서 한번 페이지를 ..

CS/컴퓨터 구조

[컴퓨터 구조] 26. Virtual Memory (1) - 개요

Virtual vs Real vs Transparent vs Erase1978년 IBM에서 정의한 바에 따르면 실제로 존재하는데, 눈으로 볼 수 있으면 'Real' 이라고 한다. (현실)실제로 존재하는데, 눈으로 볼 수 없으면 'Transparent' 라고 한다. (투명하다)실제로 존재하지 않는데, 눈으로 볼 수 있으면 'Virtual' 이라고 한다. (가상)실제로 존재하지 않는데, 눈으로 볼 수 없으면 'Erase' 라고 한다. (삭제했다) 따라서 이 용어에 따르면, Virtual Memory 는 실제로 존재하지 않지만 눈으로는 보이는 메모리를 일컫는다. Virtual Memory버추얼 메모리는 실제로는 운영체제가 제공하는 테크닉에 해당한다. 위 그림에서 초록색으로 표시된 장치는 실제로 존재하는 (Re..

CS/컴퓨터 구조

[컴퓨터 구조] 25. Cache (3) - 성능 개선

캐시를 적용한 CPU 성능이제 캐시를 적용했을 때 CPU의 성능 (실행 시간)을 한번 생각해보기로 하자.  먼저 CPU의 실행시간은 (명령어의 개수) * (CPI) * (주기) 로 구할 수 있었다.이때 명령어의 개수 * CPI 는 결국 프로그램을 실행하는 과정에서 요구하는 총 cycle 수로 볼 수 있으므로CPU의 실행시간은 (clock cycle) * (주기) 라고 할 수 있다. 이때 clock cycle 을 CPU에서 명령어를 실행시키는데 필요한 cycle 과, 메모리를 접근하는데 시간이 오래 걸려서 CPU가 stall 하는 cycle 로 구분해서 생각해보자. 이때, 만약 캐시 Hit 가 발생하면 이때는 추가적인 CPU cycle이 필요하지 않다고 해보자.(즉, 캐시 Hit 가 발생하면 MEM sta..

CS/컴퓨터 구조

[컴퓨터 구조] 23. Cache (1) - 개요

캐시의 필요성만약 저장 공간도 크면서 동시에 읽고 쓰는 속도가 빠른 메모리가 있다면 정말 좋은 일일 것이다.하지만 아쉽게도 현실에는 그런 메모리가 존재하지 않는다.큰 메모리는 작은 메모리에 비해 비교적 느리기 때문에, 무한히 크면서 무한히 빠른 메모리는 못 만들고 있다.  그래서 우리는 이렇게 메모리 계층을 나누어 이용하였다.이렇게 피라미드 쌓듯이 다양한 종류의 메모리를 나누어 사용함으로써 마치 크고 빠른 메모리를 사용하고 있다는 착각을 하게 만드는 것이다. 캐시의 필요성을 정리하기에 앞서, 먼저 무어의 법칙을 살펴보자.무어의 법칙은 정말 이론적으로 증명된 법칙이라기보다, 인텔의 창립자인 무어라는 사람이 한 예측인데, 이 예측이 워낙 잘 들어맞아서 법칙이라고 부르게 되었다. 무어의 법칙은 1980년의 D..

CS/컴퓨터 구조

[컴퓨터 구조] 21. Pipeline MIPS (5) - 회로 개선 (Control Hazard)

Control Hazard 제어 해저드는 분기를 할 때, 분기 여부의 결정을 MEM 단계에서 결정하게 되므로 MEM 단계 이후에 fetch 하는 명령어 이전까지의 명령어들을 모두 실행할 수 없게 되는 (실행하면 안되는) 해저드를 말한다. 지금 회로를 설계할 때는 branch prediction을 항상 하고 있다고 생각하고 회로를 고쳐볼 것이다.이때 예측하는 방식은 not taken 할 것이라고 예측한다고 하자.만약 not taken을 예측하고 있는데, taken 하게 된다면 그 사이에 fetch 해서 실행중이던 명령어는 모두 flush 처리할 것이다. 위 그림에서 beq명령어가 실행되는 시점의 PC 값은 40이고, MEM 단계까지 가고나면 분기 여부와 이때의 주소값을 알 수 있게 된다.그리고 WB 단계를..

CS/컴퓨터 구조

[컴퓨터 구조] 20. Pipeline MIPS (4) - 회로 개선 (Data Hazard)

Data Hazard 우선 Forwarding 이 적용되지 않은 상황에서 그냥 pipeline MIPS 회로에 그대로 위와 같은 과정으로 명령어를 실행한다고 해보자.그럼 클럭 사이클 (CC) 이 지나갈 때 회로의 흐름이 위와 같이 나타난다.그런데 첫번째 명령어인 sub의 결과로 $2 레지스터에 값이 쓰이는데, 그 다음 명령어는 곧바로 $2 레지스터의 값을 이용해 연산을 한다.즉, 데이터 의존성이 존재하는 것이다. 먼저 명령어의 흐름을 가로축으로 보았을 때, sub 명령어에 기존에는 10이라는 값이 있었고, sub 연산 결과 -20이 저장된다고 하자.그러면 WB 단계 전까지 Reg 에는 10 이 저장되어 있다가, Write Back 이 되는 전반부 쓰기 동작 이후에는 -20이 저장될 것이다. 이번엔 명령어..

CS/컴퓨터 구조

[컴퓨터 구조] 16. Single Cycle MIPS - 성능

Critical Path (임계 경로)Single Cycle MIPS 는 말 그대로 하나의 사이클에 모든 명령어를 처리하는 CPU이다.add 명령어도, branch 명령어도, lw, sw 명령어도 모두 1Cycle에 처리한다. 이때 이 CPU의 성능을 빠르게 하려면 어떻게 할 수 있을까?간단하게 생각할 수 있는 것은 1 Cycle의 주기를 짧게 가져가는 것이다. (주파수를 높이기)그렇다면 단순히 주파수를 높이기만하면 성능도 그에 따라서 높아지기만 할까? 사실은 그렇지않다.왜냐하면 Clock Cycle Time은 Critical Path에 의해 제약을 받기 때문이다.(Critical Path == 명령어를 실행하는데 가장 긴 시간이 걸리는 경로) 현재 설계한 MIPS 회로에서 Critical Path 를 ..

CS/컴퓨터 구조

[컴퓨터 구조] 5. MIPS Data Transfer Instructions (2)

Zero Register0번 레지스터는 항상 값을 0으로 유지하는 레지스터이다.이 레지스터에 값을 쓰려고 할 수 있지만, 그 결과는 언제나 0이다. 이 레지스터는 다른 레지스터에 값을 옮기는 move 명령어를 구현할 때 0과 or 연산을 취해서 다른 레지스터에 값을 쓰는 식으로 move 명령어를 구현하는 용도로 사용된다. 또는 상수값을 레지스터에 쓰고자 할 때, 0과 더하기를 해서 원하는 상수값을 레지스터에 쓰는 용도로 쓸 수도 있다.  메모리에 접근하는 상황우리의 컴퓨터는 stored program 방식을 사용하고 있다.즉, 프로그램의 명령어와 데이터가 오프칩 메모리에 저장되어 있고, CPU는 명령어와 데이터를 메모리로부터 읽어와 연산하는 방식이다. CPU가 메모리에 접근하는 상황은 크게 2가지이다.첫..

에버듀
'컴퓨터구조' 태그의 글 목록