티스토리 뷰

21. PE(Processing Element)라는 연산기를 사용하여 동기적 병렬 처리를 수행하는 것은?

문제를 잘 읽어보면 우리가 무엇을 모르는지 정확히 알 수 있다. 나는 PE라는게 뭔지 모르겠다.

그래서 조사해보니 병렬 처리 기법이라는 것과 관련이 있다는 것을 알 수 있었다.

그래서 다시 병렬 처리 기법에 대해서 조사했다.

 

파이프라인(Pipeline)

: 여러 개의 명령(Instruction)을 동시에 병렬 처리하는 장치. 분업화 원리를 활용해 시간적 병렬 처리를 수행

 

파이프라인 기법의 장점

: 연산 속도 빠름

파이프라인 기법의 단점

: 같은 연산을 반복하면 효율 좋지만 그렇지 않으면 구조 복잡, 시간 오래걸림

 

- 벡터 프로세서(Vector Processor)

: 산술 및 논리 연산, 비교, 내적 연산, 최대.최소 값 구하기 등의 벡터 연산 명령을 빠르고 효율적으로 수행

: 파이프란인화 된 벡터 프로세서, 시스톨릭 프로세서가 있다.

 

- 시스톨릭 처리기(Systolic Processor)

: 데이터 흐름과 제어 흐름이 규칙적인 특성을 갖는다. 시스톨릭 알고리즘을 이용해 수행

: 벡터 프로세서와 배열 프로세서의 특징을 결합, VLSI(초고밀도 집적회로) 기법을 이용해 구현

: 신호, 화상 처리와 같은 곳에 응용 But, 응용의 한계성, 프로그램화의 어려움

 

- 배열 처리기(Array Processor)

: PE(Processing Element)라고 불리는 다수의 연산기를 갖는 동기적 병렬 처리기

: 명령 해독 및 제어는 제어장치가 하고 PE들은 명령 해독 능력이 결여된 수동적 장치로서 명령처리만

: PE들은 상호연결되어 PE(ALU)들을 중복 이용함으로 공간적 병렬성을 얻을 수 있다.

: 벡터 계산이나 행렬 계산에 적합

 

위의 조사된 내용을 보면 정답은 "배열 처리기"인데 보기에는 없어보인다.

그렇다면 하나씩 따져가면서 정답을 지워보자. 일단 Multi Processor는 제외. 그런거 없다. 일단 병렬이니까 당연히 멀티일게 뻔하잖아? VLSI Processor도 제외. VLSI는 초고밀도 직접회로다. Processor가 아님. Pipeline Processor도 아니다. Pipeline은 병렬처리장치로 이해하는게 맞다. 남은게 Vector Processor다. 이게 정답이라는데 정확한 답은 아니겠지만 나도 잘 이해가 가진 않는다. 좋은 문제는 아닌 듯.

 

22. 반가산기에서 입력을 X, Y라 할 때 출력 부분의 캐리(Carry)값은?

일단 캐리(자리올림수)가 뭔지 좀 알아야 겠어서 알아봤다.

일단 캐리에 대해서 설명하자면 반가산기의 역할이 뭔지 알아야하는데 반가산기란 두 개의 비트를 더하여 합(Sum)과 올림자(Carry)를 구하는 것이라 한다. 이게 무슨 소리냐면 두개의 비트 X와 Y가 있다고 가정해보자.

 

X + Y = S 라고 할 때

0 + 0 = 0

1 + 0 = 1

0 + 1 = 1

 

이라고 할 수 있고 X와 Y가 둘다 1인경우 

1 + 1 = 10 이 되어야하니 자리수가 하나 올라가야한다는 이야기다. 그래서 반가산기에는 XOR 연산(SUM), 그리고 AND 연산(Carry)이 필요한 것이다. 결국 문제였던 Carry 값은 AND연산을 하는 식을 찾으란 이야기가 된다.

 

그래서 정답은 XY가 된다.

 

23. 명령어가 오퍼레이션 코드(OP Code) 6비트, 어드레스 필드 16비트로 되어있다. 이 명령어를 쓰는 컴퓨터의 최대 메모리 용량은?

명령어의 용량은 어드레스 필드와 상관이 있단다. 2의 16제곱이 되니 64K가 정답이 된다. word는 하나의 주소 사이즈라서 곱하는 거라고 한다.

 

2^16 = 이면 65,536 바이트고 이걸 1024로 나눠주면 정확하게 64가 나온다.

뭐 사실 주소 필드가 16비트라면 8비트 * 2니까 16진수로 FF, FF를 10진수로 변환하면 65,536이 나오는거라고 계산해도 괜찮겠지??

 

24. 디코더(Decoder)의 출력이 4개일 때 입력개수는?

디코더란?

위의 이미지의 각 입력 코드가 특정한 출력 코드를 생성하는 n비트 입력코드에서 m비트 출력 코드로의 변환이란다.

뭔소린지 모르겠....

그냥 입력이 n개면 2의 n제곱이 출력된다는 소리다. 그러면 출력이 4개라면 입력은 2개가 맞겠지.

2의 2제곱은 4니까. n = 2, 2^2 = 4. OK? 그러므로 n = 2.

 

25. 기억장치에 기억된 정보를 액세스하기 위하여 주소를 사용하는 것이 아니라 기억된 정보의 일부분을 이용하여 원하는 정보를 찾는 것은?

음, 이 문제는 기억장치에 대한 정보가 필요한것 같으니 조사를 좀 해보자.

 

1. RAM(Random Access Memory)

- Read / Write 가능, 휘발성

- DRAM : 소비전력 ↑, 속도 ↓

- SRAM(Static) : 재충전 필요없음, 소비전력 ↓, 속도 ↑, 전원이 공급되는 한 내용 유지, 플립플롭을 사용

- 플립플롭 : filp-flop 또는 latch는 전자공학에서 1비트의 정보를 보관, 유지할 수 있는 회로이며 순차 회로의 기본 요소다. 

 

2. ROM(Read Only Memory)

- Read, 비휘발성

- PROM(Programable ROM): 사용자가 한 번만 내용을 입력할 수는 있으나 지울 수 없다.

- EPROM(Erasable PROM): 자외선을 이용해 메모리를 여러번 지우고 다시 입력할 수 있다.

- EEPROM(Electrically Erasable PROM): 전기적인 방법을 이용해 메모리를 여러번 지우고 다시 입력할 수 있다.

 

3. 연상(연관 : Associative) 기억 장치

- CAM(Content Addressable Memory : 내용 지정 메모리) : 메모리에 저장된 데이터를 번지에 의해 찾는게 아니라 내용에의해 액세스하는 기억장치. 탐색 시간이 짧을 경우 사용.

- 고가

- 컴퓨터 처리 성능 향상

 

4. 캐시메모리

- 주기억장치의 액세스 타임과 CPU의 처리 속도차가 많을 때 병목을 줄이기 위해 사용

- 매핑방법

  - 직접사상(Direct mapping) : 캐싱 메모리에 오직 한개의 페이지만 존재하도록 설계

  - 연관사상(Associactive Mapping) : 연관기억장치에 페이지 번호가 주어지면 프레임 번호와 즉시 대응되어 빠른 번지 변환 가능

  - 세트연관사상(Set-Associactive Mapping) : 캐시 메모리에 여러 개의 페이지가 존재하도록 설계

      가상 메모리

      - CPU에 의해 참조되는 가상번지를 실기억 장소의 실주소로 바꾸어주는 매핑 필요

      - 속도향상보단 주소공간 확대가 목적

 

이 중에서 중요한 내용만 더 추스리면 아래와 같다.

 

RAM - 휘발성

ROM - 비휘발성

Associactive - 번지가 아닌 내용으로 억세스

캐시 메모리 - 주기억장치와 CPU간 병목 해결

 

정답은 뭐 Associactive가 되겠다.

 

26. 다음 진리표에 해당하는 논리식은?

입력 출력
A B T
0 0 0
0 1 1
1 0 1
1 1 0

 

이 문제를 푸는 요령은 그냥 식에다가 입력값을 대입해보고 출력값이 맞는지 확인해보면 된다.

사실 위의 진리표의 내용은 XOR 내용인데 그와 관련된 식을 외우고 있다면 바로 답을 맞출 수 있겠지만 그렇지 않다면 각 값을 대입해보면 된다.

 

더하기 표시는 논리 합(OR), 가운데 점은  논리 곱(AND)이다. 그래서 식들을 아래와 같이 써볼 수 있겠다.

 

T = (!A AND B) OR (A AND !B)

T = (A AND B) OR (!A AND !B)

T = (A AND !A) OR (B AND !B)

T = (A AND !A) OR (!B AND !A)

 

이렇게 보면 1번이 답인걸 확인 할 수 있다.

 

27. Flynn의 컴퓨터 시스템 분류 제안 중에서 하나의 데이터 흐름이 다수의 프로세서들로 전달되며, 각 프로세서는 서로 다른 명령어를 실행하는 구조는?

Flynn의 분류부터 알아보자.

 

[특징]

- 구조적 특징에 따른 분류

- 명령어 스트림(Instruction stream) : 프로세서에 의해 실행되기 위하여 순서대로 나열된 코드들의 집합

- 데이터 스트림(Data stream) : 그 명령어들을 실행하는데 필요한 순서대로 나열된 데이터들의 집합

- 프로세서들이 처리하는 명령어와 데이터 스트립의 수에 따라 분류

 

[분류]

- 단일 명령어 스트림 - 단일 데이터 스트림(SISD)

단일 명령어 스트림 - 복수 데이터 스트림(SIMD)

- 복수 명령어 스트림 - 단일 데이터 스트림(MISD)

- 복수 명령어 스트림 - 복수 데이터 스트림(MIMD)

 

결국 문제는 하나의 데이터 흐름(Single Data stream)이 다수의 프로세서로 전달되어 서로 다른 명령어를 실행(Multi Instruction)하는 구조니까 MISD 구조가 되겠다.

 

28. 다음 중 타이머에 의한 인터럽트(Interrupt)는?

인터럽트의 종류를 한번 되새김 해보자.

사실 내부 인터럽트의 종류는 더럽게 많다. 그러니 보통 문제에 나오는 인터럽트의 종류는 보통 "외부" 인터럽트인 경우가 많다.

 

- 전원 이상 인터럽트(Power Fail Interrupt) : 파워, 정전 이상 등

- 기계 착오 인터럽트(Machine Check Interrupt) : CPU의 기능적 오류

- 외부 신호 인터럽트(External Interrupt)

  - 타이머에 의한 인터럽트 : 자원이 할당된 시간이 다 끝난 경우

  - 키보드로 인터럽트 키를 누른 경우 : 대표적으로 Ctrl + Alt + Delete

  - 외부장치로 부터 인터럽트 요청이 있는 경우 : I/O 아님

- 입출력 인터럽트(I/O Interrupt)

  - 입출력장치가 데이터 전송을 요구하거나 전송이 끝나 다음 동작이 수행되어야하는 경우

  - 입출력 데이터에 이상이 있는 경우

 

정답은 "외부 인터럽트(External Interrupt)"가 되겠다.

 

29. DMA 제어기에서 CPU와 I/O 장치 사이의 통신을 위해 반드시 필요한 것이 아닌 것은?

DMA제어기가 뭔지부터 좀 알아야 풀 수 있는 문제가 되겠다.

 

DMA(Direct Memory Access)제어기란

- 입출력 장치가 직접 주기억장치를 접근하여 제어하는 방식

- CPU를 경유하지 않으므로 데이터 전송이 빠름

- 인터럽트 신호로 CPU에 입출력 종료를 전달

- 블록 단위로 데이터를 전송하여 대용량 전송 가능

- CPU와 DMA제어기에게 장치의 주소, 주기억장치의 주소, DMA를 시작하는 명령, 입출력 데이터의 양, 입출력 명령을 전송

- 전송 작업을 수행하는 순서는 [버스 사용요청 → 버스 사용 허가 → 데이터 전송 → 인터럽트] 순

- DMA제어기가 한번에 한 데이터 워드를 전송하고 버스의 제어기를 CPU에게 돌려주는 방법을 사이클 스틸링이라고 함

 

DMA 구성요소

- 인터페이스 회로 : CPU와 입출력 장치와의 통신

- 주소 레지스터 : 기억장치의 위치 지정을 위한 번지 기억 및 전송

- 워드 카운트 레지스터 : 전송되어야 할 워드의 수

- 제어 레지스터 : 전송 방식 결정

- 데이터 레지스터 : 전송에 사용할 자료나 주소를 임시로 기억하는 버퍼

 

그럼 보기를 확인해보자.

 

Addresss Register : 필요

Word Count Register : 필요

Address Line : 주소줄은 필요하지 않을까?

Device Register : 장치 레지스터는 필요없을 듯

 

Address Line과 Device Register 사이에서 갈등이 되지만 사실 데이터를 전송하는데 주소는 필요하겠지만 장치가 중요할 것 같지 않다는 관념적인 접근으로 문제를 해결하도록 하자. 문제가 좀 거지같긴 하다.

 

30. I/O Operation과 관계가 없는 것은?

I/O Operation과 관련있는 내용들을 나열하면

- Program

- Interrupt

- DMA

- Channel

- Strobe Pulse

- Handshaking 방식

이 있는데 Emulation과는 아무런 관계도 없는 거란다.

 

아.. 오늘도 외울게 잔뜩이다

힘내자!

댓글
댓글쓰기 폼