5장. 생능_컴퓨터구조론_연습문제

728x90

5,1 : 38ns

풀이) (20ns X 0.9) + ( 200ns X 0.1) = 38ns

CPU와 가까이에 위치한 기억장치의 적중률에 대한 액세스 시간과 미스률 10%에 대한 액세스 시간을 합하면 평균 기억장치 액세스 시간이 된다.

 

5.2

풀이)

적중률 0% : (0 x 10ns) + (1 x 100ns) = 100ns

적중률 20% : (0.2 x 10ns) + (0.8 x 100ns) = 82ns

적중률 40% : (0.4 x 10ns) + (0.6 x 100ns) = 64ns

적중률 60% : (0.6 x 10ns) + (0.4 x 100ns) = 46ns

적중률 80% : (0.8 x 10ns) + (0.2 x 100ns) = 28ns

적중률 100%:(1 x 10ns) + (0 x 100ns) = 10ns

설명) CPU가 원하는 데이터가 첫 번째 계층기억장치에 있는 비율이 높아질수록, 평균 액세스 시간은 첫 계층 자체의 액세스 시간인 10ns에 가까워지며 전체적인 기억장치 시스템 성능향상에 도움을 주고 있다.

5.3

(1) : (000H ~ 1FFH)

풀이) 512 x 8비트 조직 : 주소 비트 9(000H ~ 1FFH)

(2) : (000H ~ 3FFH)

풀이) 1024 x 4비트 조직 : 주소 비트 10(000H ~ 3FFH)

(3) : (000H ~ FFFH)

풀이) 4096 x 1비트 조직 : 주소 비트 12(000H ~ FFFH)

 

5.4

(1) : 64

풀이) 512 x 1비트 RAM으로 1K x 32비트 기억장치 모듈 구성하려면

RAM 칩의 기억장소 수를 확장하기 위해 직렬 2, 데이터 비트 수를 맞춰주기 위해 병렬 32개가 필요하다. 따라서 칩은 64개 필요하다.

(2) : 64

풀이) 128 X 4비트 RAM으로 1K x 32비트 기억장치 모듈 구성하려면

RAM 칩의 기억장소 수를 확장하기 위해 직렬 8, 데이터 비트 수를 맞춰주기 위해 병렬 8개가 필요하다. 따라서 칩은 64개 필요하다.

(3) : 64

풀이) 64 X 8비트 RAM으로 1K x 32비트 기억장치 모듈 구성하려면

RAM 칩의 기억장소 수를 확장하기 위해 직렬 4, 데이터 비트 수를 맞춰주기 위해 병렬 16개가 필요하다. 따라서 칩은 64개 필요하다.

 

5.5

(1) : 512

풀이) 4M x 1비트 RAM으로 용량이 64M x word(32비트) 기억장치 모듈을 구성하려면

단어길이를 맞춰주기 위해 병렬로 32, 기억장소 수를 맞춰주기 위해 직렬로 16개가 필요하다. 따라서 칩은 총 512개 필요하다.

(2) : 512

풀이)_1M x 4비트 RAM으로 용량이 64M x word(32비트) 기억장치 모듈을 구성하려면

단어길이를 맞춰주기 위해 병렬로 8, 기억장소 수를 맞춰주기 위해 직렬로 64새가 필요하다. 따라서 칩은 총 512개 필요하다.

 

5.6 : 기억장치 주소 영역의 첫 번째 주소는 00000, 마지막 주소는 11111

풀이) 여기서 기억장소 개수는 32개이며 주소비트 개수는 5개이므로 기억장치 주소 영역의 첫 번째 주소는 00000, 마지막 주소는 11111이 된다. 32 x 4비트 RAM 칩을 사용해서 32 x 16비트 기억장치 모듈을 구성하기 위해서는 칩의 데이터 비트 수를 병렬로 4개 연결해야 한다.

이 모듈을 그림으로 그려보면 아래 사진과 같다.

5.7 : 첫 번재 주소는 000H, 마지막 주소는 7FFH

풀이) 전체 기억장치 주소 영역을 구성하기 위해서는 2K= 2^11 , 주소비트 11개를 사용해야 한다. 주소를 16진수로 표현하면 첫 번재 주소는 000H, 마지막 주소는 7FFH이다.

또한, 2K x 8비트 RAM 칩을 사용해서 2K x 64비트 기억장치 모듈을 구성하기 위해서는

RAM칩을 병렬로 8개 접속 해야한다. 그래야 데이터비트 수가 한 번 액세스할 때 64비트로 나올 수 있기 때문이다. 이를 이용하여 설계한 그림은 아래와 같다.

 

5.8 : 첫 번째 주소는 000000, 마지막 주소는 111111

풀이) 전체 기억장치 주소는 (2^6 = 64) 6비트로 구성되어 있다. 첫 번째 주소는 000000, 마지막 주소는 111111이다.

또한, 32 x 8비트 RAM 칩을 사용하여 64 x 8비트 기억장치 모듈을 구성하려면

RAM 칩을 직렬로 2개 붙여서 기억장소 개수를 맞춰주어야 한다. 이를 구현한 회로 그림은 아래와 같다.

 

5.9 : 첫 번째 주소는 0000H, 마지막 주소는 1FFFH

풀이) 전체 기억장치 주소 영역을 구성하는 주소비트 개수는 13개이다. 따라서 13비트를 활용한 주소를 16진수로 표현하면 첫 번째 주소는 0000H, 마지막 주소는 1FFFH 이다.

2K x 8비트 RAM 칩을 사용해서 8K x 8비트 기억장치 모듈을 구성하기 위해서는

RAM 칩의 기억장소 개수를 기억장치에 맞춰주기 위해 직렬로 4개 접속해서 설계해야 한다. 이를 그림으로 표현하면 아래와 같다.

 

5.10

풀이) 16 x 4비트 RAM 칩을 사용해서 32 x 8비트 기억장치 모듈을 설계하기 위해서는

기억장소 개수를 맞춰주기 위해 RAM 칩을 직렬로 2, 데이터 비트 수를 맞춰주기 위해 병렬로 2, 따라서 총 RAM 칩이 4개 필요하다. 이를 설계한 그림은 아래와 같다.

5.11

풀이) 1K x 8비트 RAM 칩을 사용해서 2K x 16비트 기억장치 모듈을 구성하기 위해서는

칩을 직렬로 2개 접속해서 기억장소 개수를 맞춰주고. 다시 병렬로 2개 접속해서 데이터 비트 수를 맞춰주어야 한다. 이를 적용한 설계 그림은 아래와 같다.

 

5.12

풀이) 256K x 8비트 조직을 가진 ROM블록 선도.

ROM 칩은 Read Only Memory 이므로 읽기 신호만 있다는 특징이 있다. 또한, ROM칩에서 주소 버스를 통해 들어오는 주소 비트는 18이다. 이를 적용해서 그린 그림은 다음과 같다.

5.13

풀이) 2개의 4K x 8비트 ROM , 4개의 2K x 8비트 RAM칩을 이용

ROM의 주소는 0번지부터, RAM의 주소는 8000H번지부터 시작

 

5.14

(1) : RAM 8, ROM 4개 필요

풀이) 2M x 16비트 RAM을 구성하려면 1M x 4비트 RAM 칩은 직렬로 2, 병렬로 4개 접속해야 한다. 4 X 2 = 8, 따라서 RAM 칩은 8개 필요하다.

ROM칩은 512K x 8비트 크기인데, 이를 활용해서 1M x 16비트 ROM을 구성하려면 직렬로 2, 병렬로 2개 필요하다. 따라서 ROM 칩은 4개 필요하다.

(2) : 512K word

풀이) 문제에서 16비트 CPU가 주어졌으므로 1word = 16비트이다.

주기억장치 전체 용량은 512Kword가 된다.

(3)

5.15

(1) : 0.5

풀이) 캐시적중률 = 캐시적중횟수 / 전체 기억장치 액세스 횟수 이다.

따라서, 전체 액세스 횟수 15000회를 기준으로 H = 7500 / 15000 = 0.5 가 된다.

(2) : 0.8

풀이) 캐시적중률 = 캐시적중횟수 / 전체 기억장치 액세스 횟수 이다.

따라서, 전체 액세스 횟수 15000회를 기준으로 H = 12000 / 15000 = 0.8 이 된다.

(3) : 0.9

풀이) 캐시적중률 = 캐시적중횟수 / 전체 기억장치 액세스 횟수 이다.

따라서, 전체 액세스 횟수 15000회를 기준으로 H = 13500/ 15000 = 0.9 가 된다.

 

5.16 : 21.8 ns

풀이) 주기억장치 액세스 시간을 A, 캐시 액세스 시간을 B라고 두었을 때,

평균 기억장치 액세스 시간 T = 0.85 x 8 + 0.15 x 100 = 21.8 ns 가 된다.

 

5.17 : 22.1 ns

풀이) 검사 시간까지 별도로 고려한다는 것은, CPU가 캐시를 액세스 했을 경우 해당 데이터가 없어서 다시 주 기억장치로 가서 데이터를 액세스 해오는 시간까지를 고려한다는 의미이다. 이를 위해서는 기존 공식에서 주기억장치 액세스 시간에 캐시 인출시간을 별도로 추가해서 구해야 한다.

따라서 이를 고려하여 식을 고쳐쓴다면

T = (H x Tc) + { (1 H) x (Tm + Tk) } 가 되며, 캐시 검사 시간을 2ns로 둔다고 하면

T = 0.85 x 8ns + 0.15 x 102 ns = 22.1 ns 가 된다.

 

5.18 : ; 캐시 적중률은 0.9 이상이 되어야 한다.

풀이) Ta = 19. Tc = 10, Tm = 100

Ta = H x Tc + (1 H ) x Tm

따라서 공식에 넣어 등식을 풀어본다면,

19 = n x 10 + (1 n) x 100

19 = 10n + 100 100n

등식은 90n = 81 , n = 0.9 가 된다.

따라서 평균 기억장치 액세스 시간이 19n 이하가 되기 위해서는 캐시 적중률이 0.9이상이 되어야 함을 알 수 있다.

 

5.19

(1) : 2^12

풀이) 요구 인출은 단어의 수와 동일한 캐시 라인이 존재하게 된다.

캐시의 크기는 2^12, 단어의 길이는 2^2 따라서 캐시 라인은 2^12개가 된다.

(2) : 2^11

풀이) 인출 크기가 2단어인 경우,

선인출 시에 캐시라인 수는 2^12 / 2 이다. 따라서 2^11 개 이다.

(3) : 2^10

풀이) 선인출을 위하여 인출 크기 4단어로 이루어진 블록으로 나누어준다면

2^12 / 4 = 2^10. 즉 캐시 라인의 수는 2^10개가 된다.

 

5.20

(1) : 2^12

풀이) 캐시의 용량은 2^14 바이트이다. 캐시 라인 1개당 크기는 2^2 바이트 이므로

캐시 라인의 개수 = 2^12 / 2^2 = 2^12 개가 된다.

 

(2) : 2^18

풀이) 주기억장치의 용량이 2^20 바이트. 주기억장치 블록 1개 당 2^2바이트이다.

따라서 주 기억장치의 블록 개수 = 2^20 / 2^2 = 2^18 개가 된다.

 

(3) : 2^6

풀이) 주 기억장치 블록 개수는 2^18 개이고, 캐시 라인의 수는 2^12개이다.

이 경우 캐시 라인 하나를 공유하는 주 기억장치 블록의 수는 2^18 / 2^12 = 2^6

 

(4)

풀이) 총 주기억장치 용량은 2^20 이므로 주소 형식을 구성하는 총 비트는 20비트가 된다.

블록 크기 = 4바이트이므로 블록 내부의 단어를 구분해주기 위한 w비트는 2비트가 필요하다.

캐시 라인 개수 m = 2^12 이므로 라인비트에는 12비트가 할당되어야 하며, 나머지 6비트는 태그필드에 할당되어 주소형식이 구성될 것이다. 그림으로 표시하면 아래와 같다.

5.21

풀이) 4-wqy 세트 연관 사상 방식으로 구성하여 풀어야 한다.

주기억장치 용량 = (블록 수) x ( 블록의 용량 ) = 2^16바이트

따라서 주소비트는 16비트로 구성되어야 한다.

캐시 라인의 수는 26개이고, 각 세트가 22개 라인으로 구성되어 있으므로 세트 당 캐시 라인의 개수는 24개이다. 따라서 세트 주소에는 4비트가 필요하다. 단어 주소는 4비트가 필요하며, 태그는 8비트가 필요하다. 이를 그림으로 표현하면 다음과 같다.

 

 

5.22

) 직접 사상 방식은 간단하고 비용이 적게 든다는 장점이 있고, 완전연관 사상 방식은 복잡하고 비용이 많이 든다는 단점을 가지고 있다. 하지만, 완전 연관 사상은 블록이 캐시로 적재될 경우 라인의 선택이 자유롭기 때문에 지역성이 높을 경우 캐시 적중률을 월등하게 높인다는 장점이 있다. 이에 비해 직접 사상 방식은 블록이 캐리 라인으로 적재될 때 적재될 수 있는 라인이 단 1개로 한정되어 있어서 캨시 적중률이 훨씬 낮다.

 

5.23

(1) : 캐시 적중

(2) : 캐시 미스

풀이) 라인 필드 내용을 따라가서 3번 라인을 보았을 때 라인 태그는 00인데, 주소의 태그는 11이므로 태그 불일치 상태이다. 따라서 다시 이 주소는 주기억장치로 가서 블록 단위로 e;ec을 긁어 캐시3번 라인으로 적재될 것이고 태그는 11으로 세트된다.

(3) : 캐시 미스

풀이) 라인 필ㅇ드 내용을 따라가서 5번 라인을 보았을 때 라인은 현재 빈 상태이다. 따라서 5번 라인의 데이터에 assm을 적재하고 태그는 00으로 세트한다.

(4) : 캐시 적중

 

5.24

(1): 캐시 미스

풀이) 이 블록이 적재될 수 있는 2번 세트의 두 라인 태그는( 010, 101) 인데, 이는 문제의 주소 태그 110과 불일치 상태이므로 캐시 미스 상태이다. 따라서 세트 내부의 두 태그 중 하나가 교체 알고리즘을 따라 교체되어 태그 110을 갖고 데이터는 comp로 변경되어야 한다.

(2) : 캐시 미스

풀이) 이 블록이 적재될수 있는 3번 세트의 태그는 000, 문제의 주소 태그는 011이다. 불일치한다. 따라서 세트 대부 두 번째 라인이 비어있으므로 해당 라인에 태그 011과 데이터 move를 저장한다.

(3) : 캐시 적중

(4) : 캐시 미스

풀이) 이 블록이 적재될 수 있는 1번 세트의 태그는 001이고 문제 주소의 태그는000이기에 불일치한다. 따라서 1번 세트 내부 비어있는 두 번째 라인 태그에 000. 데이터값은 hand를 저장한다.

 

5.25 : (a) H = 2/11 (b) H = 6/11

풀이) 교체 알고리즘이 FIFO인 경우에 예제 5-6의 적중률은 다음과 같다.

(a) H = 2/11 (b) H = 6/11

 

5.26

(1) : H = 3/12

(2) : H = 5 /12

(3) : H = 5/12

(4) : H = 6/12

 

5.27

(1) : 113.6ns

풀이)읽기 동작의 평균 액세스 시간 = 0.8x 20ns + 0.2 x 200ns = 56ns

쓰기 동작의 평균 액세스 시간 = 200ns

Write-through: 0.6 x 56ns + 0.4 x 200ns = 113.6ns

(2) : 68ns

풀이) Write back 은 읽기와 쓰기의 평균 시간이 동일하다.

따라서 0.8 x 20ns + 0.2 x ( 200ns + 0.3 x 200ns) = 68ns가 된다.

 

5.28 : 26.2 ns

풀이)

Ta = 0.6 x 2ns + (0.85-0.6) x 20ns + 91-0.85) x 200ns

Ta = 1.2ns + 5ns + 30ns = 36.2ns

 

5.29 : 20ns

풀이)

0.6 x 2ns + (1 0.6) x 0.85 x 20ns + {1 0.6 - (1 0.6) x 0.85} x 200ns

Ta = 1.2ns + 0.34 x 20ns + 0.06 x 200ns

Ta = 1.2ns + 6.8ns + 12ns = 20ns

 

5.30

(버스 폭 x 클록 주파수 )

100MHz x 64 / 8 = 800Mbytes/sec

 

5.31

(버스 폭 x 클록 주파수 ) x 4(DDR2)

266MHz x 64/8 x 4 = 8512MBytes/sec

 

5.32 : 30ns

풀이) 200MHz 의 경우 클록 주기는 5ns 이다.

클록주기 x 사이클 수 / DDF + CAS 지연

5ns x 8사이클 / 2(DDR) + 2x5ns = 20ns + 10ns = 30ns가 된다.

 

5.33

(1) : 20ns

풀이) (클록주기) x (사이클 수) /DDR2 + CAS 지연

5ns x 8 사이클 / 4(DDR2) + (2x5ns) = 10ns + 10ns = 20ns 가 된다.

(2) : 전체 용량= 8 GBytes

풀이) 512M x 8 x 8x2(양면) = 8 GBytes 가 된다.

 

728x90