2017 2학기 컴퓨터구조 중간고사  ( 56점 만점)     2017.10.19

 

1. 다음 빈 칸을 기술하라. (13 x 2 = 26 )
(1) (
서버(server) )는 과거 대형 컴퓨터로 불리던 것의 현대적 형태로 보통 네트워크를 통해서만 접근되며 확장성과 신뢰도가 중요하다.

(2) 하드웨어와 소프트웨어의 생산성을 높이는 핵심 기술 중 하나는 여러 수준에서 설계를 명시하는 ( 추상화(abstract) )를 사용하는 것으로, 이는 하위 수준의 상세한 사항을 안보이게 상위 수준의 모델을 단순화 한다.

(3) 모든 컴퓨터는 하드웨어 이벤트가 발생하는 시점을 결정하는 (  클럭 )을 이용하여 동기화 된다. 프로그램의 CPU 실행 시간은 ( 클럭 사이클 수 ) ( 클럭 사이클 시간 )의 곱으로 계산된다.

(4) 프로세서의 전력 장벽(power wall)이 발생한 이유는 ( 누설 전류(leakage current) 로 정전전력 소모가 커져서 트랜지스터의 전압을 낮출 수 없고냉각장치로 발열문제를 해결할 수 없기 때문이다.이의 해결책으로는 전력소모를 줄이면서 성능을 개선하기 위한 방법으로 ( 멀티프로세서 또는 멀티코아 ) 설계 방식이 있다

(5) MIPS의 조건분기 명령의 타겟(분기할 위치) 16비트의 오프셋(offset,상대거리)로 표현되며 타겟 주소는  ( PC+4+오프셋x4 ) 로 계산된다.
(6) MIPS
의 프로시저 호출 명령어로는 ( jal (jump and link) ) 명령어, 복귀(return) 명령어로는 ( jr(jump register) ) 명령어를 사용한다.

(7) ( 링커(linker) )는 실행 이미지를 생성하는 과정으로 세그먼트를 통합하고, 레이블의 주소를 결정하고 외부 및 내부 참조를 해결한다.

(8) IEEE 754 부동 소수점 표현에서 부호 s, 지수 e, 소수 f, 바이어스가 b라 할 때 실수 표현식은 ( (-1)s x 1.f x 2(e-b) ) 가 된다.

(9)  그래픽오디오 등 멀티미디어 연산에서 짧은 벡터 데이터들이 반복 연산되는 데이터 수준의 병렬성을 ( SIMD (Single Instruction Multiple Data) ) 라고도 한다.

 

2. 빛의 삼원색(빨강,녹색,파랑) 각각에 대하여 화소(pixel) 8비트가 필요한 1000 x 1000 해상도의 디스플레이에서 다음을 계산하라. (8)

    (1) 한 프레임을 저장하기 위해 필요한 프레임 버퍼의 최소 크기는 몇 바이트인가?
    1000 x 1000
픽셀 x 3 = 3,000,000 = 3 x 106 바이트/프레임

  (2) 100 Mbit/s 네트워크를 이용하여 한 프레임을 전송하는데 걸리는 최소 시간은 얼마인가?
      (3 x 106
바이트 x 8 비트/바이트 ) / (100 x 106 비트/)
       = (24 x 106) / (100 x 106) = 0.24

 

3. MIPS 명령어에서 다음을 기술하라. (12)
(1) 
다음 정수형 연산을 수행하는 MIPS 명령어 코드를 작성하라, A의 베이스 주소는 레지스터 $s1 에 있고, a/b/c 는 각각 레지스터 $s2/$s3/$s4이다. (6)
       1) A[3] = b & c;    
          and $t0, $s3, $s4
          sw  $t0, 12($s1)

       2) if (a >= 5) a = b >> 2; 
          else a = b | c; 
                   slti $t0, $s2, 5
                   bne  $t0, $zero, Else

srl  $s2 , $s3, 2
j    Exit

Else:
or   $s2, $s3, $s4

Exit:

   
(2)
다음 실수형 연산을 수행하는 MIPS 명령어 코드를 작성하라. A의 베이스 주소는 $s0에 저장되어 있고, i/j/x 는 각각 $s1/$s2/$f0 이다. (6)

 
         float  A[16][16], x;

         int  i,j;

         x = A[i][j]


      sll    $t0, $s1, 4             # $t0 = i * 16
      addu   $t0, $t0, $s2           # $t0 = (i * 16 + j)

        sll    $t0, $t0, 2             # $t0 = (i * 16 + j) * 4
      addu   $t0, $t0, $s0            # $t0 = A + (i * 16 + j) * 4
      lwc1   $f0, 0($t0)             # x = A[i][j]
      (l.s)

4. 다음 32비트 양의 정수 곱셈 하드웨어에서 아래를 기술하라. (10)

 

(1) A, B 레지스터의 용도(승수(multiplier)/ 피승수(multiplicand))와 시프트 방향
  A
레지스터는 피승수가 저장되고, 왼쪽으로 시프트
  B
레지스터는 승수가 저장되고, 오른쪽으로 시프트

 

(2) 곱셈 알고리즘을  C 언어 형태의 의사 코드(pseudo-code)로 기술

     for (i=0; i < 32; i++) {

        if (bit 0 of B)

            Product += A;

        A <<= 1;

        B >>=1;

     }