목록2학년 2학기/컴퓨터 구조 (47)
오래 못 할 짓 하지 않기
챕터 5 DISK의 용량 / CPU의 속도를 가져오려고 Cache를 만들었다. (코드 주고) > 어떨 때 뭐가 유리함? - Temporal Locality: 변수 하나 만들어서 그거 계속 돌려먹을 때 ex) a= b+1; d = 4*a +c; - Spatial Locality : 배열 사용할 때 ex) for( int i=0; i parallel하게 동시에 [ 찾으려는 데이터의 tag ]와 [ 주소를 나타내는 tag ] 여러 개 비교할 수 있도록 만들어야 한다! 3) Set associative : 위 2개가 섞인 느낌이다. Set는 태그로 들어가고, 그 안에서는 맘대로 들어감 set는 정해줄게 그 안에는 너가 알아서 들어가 ● 장점 : Associative set의 개수가 늘어나면 miss날 확률이 줄..
사용자와 컴퓨터는 Input / Output으로 교류한다. 따라서, I/O가 없으면 아무리 좋은 기술이 있어도, 얻을 수 있는 게 없다. ex) 바퀴없는 차. ● Processor 와 IO Device들과 Mem 사이를 연결해주는 것 = BUS ● Bus의 Performance를 제한하는 것 : wire의 길이 , connections의 수 더보기 (추가적인 설명) ● BUS 의 장점 1) Versaility : 새로 Device를 추가하기 쉽고 Peripherals = Standard bus를 이용하는 IO device는 빼거나 이동시킬 수 있음 (조립하기 쉽다는 의미) 2) Low Cost : 하나의 wire를 여러 길로 빠지게 만들어서 공유하기 때문에 비용 절감 가능 ● BUS 의 단점 1) Com..
Virtual memory ● 가상 메모리 사용 이유 1) 효과적이고 안전하게 Main Mem을 사용, 공유하기 위해 2) 제한된 크기의 Main Mem에서 프로그램이 돌아가는 걸 방지하기 위해서 따라서 Virtual 메모리는 Main mem에 직접 접근하는 방식이 아닌 Virtual mem에 Virtual address로 저장하여, Main mem안에 있는 physical address에 접근한다. 이렇게 주소를 Virtual address를 통해서 접근하는 방법을 Protection 이라고 한다. Virtual Memory 를 사용하면, 여러 process들이 작동하면서 memory를 공유할 수 있다. 특징 ● Virtual Mem은 위 사진에서 Disk와 Mem 사이에서 작동한다. ● 2개의 Lev..
Cache 의 performance를 올리기 위해서는 어떤 locality의 장점을 가져오는 게 좋을까? 1) Temporal - 가져온 데이터 블럭, 그걸 또 이용할 거. : 1word 2) Spatial - 가져온 거 근처에 있는 것들도 가져와서 걔네도 쓸 거 그럼 한 블럭에 여러 word를 가져와야함 왼쪽은 1 word를 가져왔을 때, 즉 data에 하나의 word만 담겨서 들어올 때의 모습이고 오른쪽은 4 words를 가져왔을 때의 모습이다. 64KB 캐쉬 메모리가 4words blocks을 가져옴 = 2 ^16 bytes = 2 ^14 words ( 1 word = 4 bytes ) = 2 ^12 blocks ( 1 block = 4 words ) → 하나의 block에 4개의 word를 담아오..
대부분의 프로그램은 Memory 에 data를 access하는 데에 시간을 대부분을 쓴다. 따라서, 메모리에 접근하는 시간이 Performance에 큰 영향을 끼침 + 우리는 크고 빠른 데이터를 원한다. 하지만 큰 데이터는 속도가 느리고 빠른 데이터는 작을 수밖에 없다. " Smaller is faster " 아래로 갈수록 데이터의 크기는 ↑ , 속도는 ↓ 이상적인 메모리는 SRAM의 aceess 속도 + Disk의 용량이다. 해결법 계층 구조를 나눈다. (= 우선 순위를 나눈다) - CPU에서 멀어지면 접근하는 시간이 길어지기 때문에 우선 순위별로 CPU와 가깝게 배치한다. Locality 1. temporal locality : 방금 썻던 놈을 곧 다시 쓰는 경우. ex) a = b + c; d = ..
예제 1) CLK Cycle이 5번째 일 때 각 Control signal이 어떤 상태일지 생각해보기 먼저, 각 Stage에 무슨 명령어가 있는지 파악하는 게 중요한다. 그런 다음에 그 명령어에 필요한 Control signal을 넣어줌. 더보기 - RegDst : add 에서 Dst주소는 Instruction 15~11에 있음 : 1 - ALUSrc : 레지스터에서 읽은 값을 ALU에 넣을거라서 0 - MemRead : LW 명령어니까 1 - MemWrite : LW 명령이니까 0 - MemtoReg : LW 명령어니까 1 예제2) a) ALU 작동 시간이 25% 줄어들면 Speedup에 영향이 갈까? 간다면 얼마나 갈까? → CLK Cycle은 모든 stage를 통틀어 가장 오래 걸리는 곳에 맞춘다...
초기 컴퓨터 - Inst set이 작고 간단했다. ex) 8비트 Instruction - Hardware 를 가능한 조금 쓰려고 했고, 기술이 부족했다. - CISC 를 사용하여 작은 Small Inst 를 커버하려고 했다. + 다양하고 복잡한 Inst가 있으므로 IC를 줄일 수 있다. ( ex) CISC에서 ADD는 LW+ADD가 섞여있다.) → 이후 80세기 초, 새로운 컴퓨터 개념이 나왔다. 가능한 메모리 접근이 없는 명령어들이 나오면서, RISC가 나옴 CISC CISC의 목적 : Statement 1개 → Machine Instruction 1개 (high-lv-lang) → (low-lv-lang) 특징 1. 많은 양의 Inst 2. 다양한 addressing mode 3. Inst마다 길이가..
Performance관련해서는 고려할 점이 2가지이다. 성능 / 비용 우리가 비용에 관련해서 공부할 것은 아니므로 성능을 어떻게 따질지를 알아보자. 먼저 성능을 따지는 기준에 대한 예시를 하나 보자. - Boeing 747 비행기는 목적지까지 가는데 속도가 느려 6.5시간이 걸린다. 하지만 470명을 운송할 수 있기에 Throughput은 470명이 610으로 이동한 정도이다. - Concorde 비행기는 목적지까지 3시간이면 갈 수 있는 속도이다. 하지만 132 명을 태울 수 있기에 Thoughput 도 그만큼 낮다. 먼저, 돈을 생각하지 않는 승객의 입장을 생각해보자. 이 승객은 빨리 목적지에 도착하는 것이 좋기 때문에 비행(작업)에 시간이 조금 걸리는 Concorde를 탑승할 것이다. 그렇다면 비행..
파이프라인 교수님 설명 실수 정정 1. speedup : non-pipeline이 주어진 작업을 하는데 걸린 시간 = 8시간 pipeline이 주어진 작업을 하는데 걸린 시간 = 3.5시간 8/3.5 = 16/7 2. Pipeline의 Throughput - 8시 : A작업만 다 끝냄 / 걸린 시간 : 2시간 = 1/2 - 8시 반 : A,B작업 끝냄 / 걸린 시간 2시간 반 = 2/2.5 - 9시 : A,B,C작업 끝냄 / 걸린 시간 3시간 = 3/3 1번 문제 ( 오타있음 둘째 줄에 left,right 바꿔야함 ) 해당 명령어가 실행될 때 쓰이는 Components를 색칠해라. 그리고 해당 Components들에 write로 작동하는지 read로 작동하는지도 표시해라. 해봐라 Answer 다른 명령어..
Hazard : 다음에 실행되어야 하는 명령어가 실행될 수 없는 상황 그에 관한 원인은 다음 3가지가 있다. 1. Structural Hazard : 하드웨어가 한 번에 2가지 일을 할 수 없기 때문에 발생한다. ( 화장실 칸이라고 생각하면 됨. 같이 사용하는 건 절대 용납 X ) ( 대신 물내리고 나오는 순간에 들어가는 건 가능 ) 예) - Multi CLK Cycle에서는 Mem이나 Adder가 하나만 있어도 문제가 없다. (동시에 작동할 일 X) - Pipeline에서는 같은 시간동안 일을 하는 곳이 있기 때문에 하나의 하드웨어에 접근하는 시간이 겹치면 Hazard가 발생한다. Mem과 Adder가 하나씩만 있다면 표시된 부분에서 같은 하드웨어를 사용해야한다. → 해결법 : 하드웨어를 분리한다. e..