[2과목] 필기기출 (2021-09-12)
[2과목] 전자계산기구조
21. 자기테이프에서 많이 쓰이는 단위인 bpi의 의미는?
- byte per inch
- bit per inch
- baud per inch
- bin per inch
2번
* bpi (bits per inch)
자기테이프(magnetic tape)와 같은 직선 형태의 저장매체에서
1인치당 기록할 수 있는 비트 수를 나타내는 기록 밀도 단위.
** 기록 밀도가 높음
=> 같은 길이에 더 많은 데이터 저장 가능.
- DPI (dots per inch) : 프린터나 이미지의 해상도에서 사용됨. (화소 수)
- BPI (bytes per inch) : 간혹 바이트 단위로 표현할 때. (데이터 처리량, 전송량 등)
- TPI (tracks per inch) : 트랙 밀도 (자기 디스크 등에서 사용)
* TPI vs BPI
디스크 표면은 연필로 원을 여러 개 그린 것처럼 원형 트랙(track)들로 구성되어 있음.
TPI
디스크 반경 방향으로 1인치 폭에 트랙을 몇 개나 넣을 수 있는지, 트랙이 위↕아래로 얼마나 촘촘히 있는지를 뜻함.
BPI
트랙 선형 방향으로 1인치당 몇 개의 비트를 기록할 수 있는지,
트랙 한 줄 위에서 좌→우로 얼마나 조밀하게 기록했는지를 뜻함
| 항목 | TPI (Tracks Per Inch) | BPI (Bits Per Inch) |
| 방향 | 수평 방향 (디스크 반경 방향) | 선형 방향 (트랙 길이 방향) |
| 의미 | 1인치당 트랙 수 | 1인치당 비트 수 |
| 적용 | 디스크, 플로피디스크 등 | 자기테이프, 디스크 등 |
| 관련된 개념 | 트랙 밀도 | 기록 밀도 |
22. 다음 마이크로 오퍼레이션과 관련이 있는 것은? (단, EAC는 끝자리 올림과 누산기를 의미한다.)

- AND
- ADD
- JMP
- BSA
2번
* 마이크로 오퍼레이션 (Micro-Operation)
명령어 하나를 실제로 진행하기 위해 컴퓨터 내부에서 발생하는 세부적인 동작들.
* 주요 레지스터
- MAR (Memory Address Register) : 메모리 주소를 저장.
- MBR (Memory Buffer Register) : 메모리에서 읽은 데이터 or 메모리에 쓸 데이터를 저장.
- AC (Accumulator) : 누산기 (연산 결과를 저장하는 레지스터)
- EAC (Extended AC) : AC의 확장, 즉 AC와 함께 쓰이는 보조 레지스터 (예: 올림 비트 포함)
- MAR ← MBR(ADDR) : 주소를 MAR에 저장.
- MBR ← M(MAR) : MAR에 있는 주소에서 값을 읽어 MBR에 저장.
- EAC ← AC + MBR : AC와 MBR 값을 더해서 EAC에 저장.
=> 메모리 주소를 통해 데이터를 읽고, AC(누산기)와 더한 결과를 EAC에 저장.
- AND : AC ← AC ∧ M(MAR) (논리곱)
- ADD : AC ← AC + M(MAR) (덧셈)
- JMP : PC ← 주소 (분기 명령)
- BSA : 서브루틴 호출 (주소 저장 + 점프)
23. 병렬 프로세서 시스템에서 한 번에 한 개씩의 명령어와 데이터를 순서대로 처리하는 단일 프로세서(Uniprocessor) 시 스템을 의마하는 것은?
- MISD
- MIMD
- SISD
- SSMD
3번
* 플린의 분류 (Flynn's Taxonomy)
: 컴퓨터 구조에서 명령어와 데이터를 어떻게 처리하느냐에 따라 시스템을 네 가지로 분류.
- SISD (Single Instruction, Single Data)
단일 명령어로 단일 데이터 처리 → 일반적인 단일 프로세서 시스템 (일반 CPU) - SIMD (Single Instruction, Multiple Data)
하나의 명령어로 여러 데이터에 동시에 같은 작업 → 벡터 연산, GPU (병렬 연산) - MISD (Multiple Instruction, Single Data)
여러 명령어가 같은 데이터에 수행됨 → 이론적으로만 존재, 실제 구현 드묾 - MIMD (Multiple Instruction, Multiple Data)
서로 다른 명령어로 서로 다른 데이터를 병렬 처리 → 멀티코어 시스템, 병렬 컴퓨터
24. 인터럽트의 발생 원인이 아닌 것은?
- 정전 또는 전원 이상
- 임의의 부 프로그램에 대한 호출
- CPU의 기능적인 오류 동작 발생
- 타이머에 의해 규정된 시간을 알리는 경우
2번
* 인터럽트란?
CPU가 현재 실행 중인 작업을 잠시 멈추고, 더 시급한 일을 먼저 처리하도록 하는 신호.
즉, 예외적이거나 긴급한 상황이 발생했을 때 CPU의 흐름을 중단시키고 해당 처리를 우선하게 만드는 메커니즘.
* 인터럽트의 목적
- 주변 장치나 시스템에서 이벤트 발생을 CPU에 알림.
- CPU가 비효율적으로 반복 검사(Polling)하는 것을 방지.
- 시스템의 반응성 향상.
- 예외 상황에 대한 보호 및 대응.
* 인터럽트의 발생 원인
- 하드웨어 인터럽트 : 전원 이상, I/O 완료, 타이머, 외부 장치 요청.
- 소프트웨어 인터럽트 : 사용자 프로그램에서 예외(0으로 나누기 등) 또는 시스템 콜
1. 정전 또는 전원 이상
: 전원 공급에 이상이 생기면 즉시 처리 필요. => 하드웨어 인터럽트
2. 임의의 부 프로그램에 대한 호출
: 일반적인 함수 호출은 프로세스 흐름의 일부.
3. CPU의 기능적인 오류 동작 발생
: 연산 불능, 예외 발생 등 => 예외 인터럽트(트랩)
4. 타이머에 의해 규정된 시간을 알리는 경우
: 시분할 OS에서 시간 할당이 끝났음을 알림. => 타이머 인터럽트
* 인터럽트 vs 트랩 vs 시스템 콜 *
| 항목 | 인터럽트 (Interrupt) | 트랩 (Trap) | 시스템 콜 (System Call) |
| 발생 원인 | 외부 또는 내부 이벤트 | 프로그램 내부 오류 또는 의도적 요청 | 사용자 프로그램이 OS 기능 요청 |
| 예시 | 타이머 알림, I/O 완료, 전원 이상 | 0으로 나누기, 메모리 접근 오류 | 파일 열기, 프로세스 생성 |
| 발생 시점 | 비동기적 (예고 없이 발생) | 동기적 (명령 실행 중 발생) | 프로그래머가 명시적으로 호출 |
| 처리 목적 | 긴급 상황 처리 | 예외 처리 or 강제 시스템 호출 | 운영체제 기능 사용 |
| CPU 관점 | 외부에서 강제 개입 | 내부 오류 감지 or 예외 처리 | 커널에 기능 위임 (의도된 요청) |
(조합 논리 회로)
25. 다음 조합 논리 회로의 명칭으로 옳은 것은? (단, 입력변수 는 A와 B, 출력변수는 X와 Y이다.)

- 전가산기
- 반가산기
- 전감산기
- 반감산기
4번
* 조합 논리 회로 (combinational logic circuit)
입력값이 주어졌을 때, 기억 없이 즉시 출력이 결정되는 회로.
대표적인 예 : AND, OR, NOT 게이트, 산기(Adder)
* 기본 논리 게이트
| 게이트 | 기호 | 동작 | 예시 |
| AND | · 또는 ∧ | A·B: 둘 다 1일 때만 1 | 1 AND 1 = 1, 나머진 0 |
| OR | + | A+B: 둘 중 하나라도 1이면 1 | 1 OR 0 = 1 |
| NOT | ¬ 또는 ~ | A̅: 반전 | NOT 1 = 0 |

- 입력: A, B
- 출력: X = A ⊕ B (XOR), Y = A · B (AND)
- OR 게이트 모양이지만, A와 B가 AND-NOT-OR 조합으로 들어가서 X는 XOR
- Y는 A와 B가 둘 다 1일 때만 1이 되므로 AND 게이트
컴퓨터구조 4강 - 조합논리회로
컴퓨터구조 4강 - 조합 논리회로 강의록
velog.io
26. 레지스터 사이의 데이터 전송방법에 대한 설명으로 틀린 것은?
- 직렬 전송방식에 의한 레지스터 전송은 하나의 클록 펄스 동안에 하나의 비트가 전송되고, 이러한 비트 단위 전송이 모여 워드를 전송하는 방식을 말한다.
- 병렬 전송방식에 의한 레지스터 전송은 하나의 클록 펄스 동안에 레지스터 내의 모든 비트, 즉 워드가 동시에 전송되는 방식을 말한다.
- 병렬 전송방식에 의한 레지스터 전송은 직렬 전송방식에 비해 속도가 빠르고 결선의 수가 적다는 장점을 가지고 있다.
- 버스 전송방식에 의한 레지스터 전송은 공통의 데이터 전송 통로를 이용하는 방식이다.
3번
* 레지스터란?
레지스터(Register)는 CPU 내부에 있는 작고 빠른 기억장치.
- 연산 중인 데이터 임시 저장.
- 명령어 기억
- 주소 저장.
예) 누산기(Accumulator), 프로그램 카운터(PC), 명령어 레지스터(IR) 등
* 레지스터 간 데이터 전송 (Register Transfer)
레지스터는 서로 데이터를 주고 받으며 작동. (A레지스터 -> B레지스터)
* 레지스터 전송 방식의 종류
(1) 직렬 전송 (Serial Transfer)
한 번에 1비트씩 데이터를 전송.
예) 8비트 데이터 --> 8번의 클럭 주기 동안 비트 하나씩 내보냄.
- 선이 적게 듦 (결선 수가 적음)
- 회로 간단
- 전송 속도가 느림
=> 장거리 통신이나 입출력 장치 등에서 사용.
(2) 병렬 전송 (Parallel Transfer)
모든 비트를 동시에 전송.
예) 8비트 데이터 --> 8개 라인을 통해 한 번에 전송.
- 전송 속도 빠름 (1클럭으로 끝남)
- 결선 수가 많음 (비트 수만큼 라인 필요)
- 회로 복잡, 비용 증가
=> CPU 내부 레지스터 간 전송에 주로 사용.
(3) 버스 전송 (Bus Transfer)
여러 레지스터들이 데이터를 주고받을 때, 공통된 전송 경로(버스)를 이용.
* 버스 종류
- 데이터 버스 : 데이터 전송용.
- 주소 버스 : 주소 전달용
- 제어 버스 : 동작 제어용
- 하나의 버스를 여러 장치가 공유하므로 결선 수가 줄어듦
- 확장성 용이
- 동시 전송 불가 (한 번에 하나씩만 사용 가능) -> 충돌 방지 필요
| 구분 | 방식 | 속도 | 결선 수 | 특징 |
| 직렬 전송 | 1비트씩 | 느림 | 적음 | 입출력에 유리 |
| 병렬 전송 | 여러 비트 동시 | 빠름 | 많음 | CPU 내부에서 많이 사용 |
| 버스 전송 | 공통 경로 사용 | 중간 | 적당함 | 여러 장치 공유 |
* 클록 (clock) : 신호 생성기. => 모든 동작을 일정한 시간 간격(주기)으로 동기화.
* 클록 펄스 (Clock Pulse) : 클록이 만들어내는 주기적인 전기 신호.
컴퓨터 내부 장치들은 빠르게 동작하므로, 언제 동작해야 할지를 알려주는 기준 필요.
클록 펄스 하나 = 한번의 동작.
* 워드 (Word)
컴퓨터(CPU)가 한 번에 처리하는 데이터의 단위.
- 8비트(1바이트) CPU --> 워드 = 8비트
- 16비트 CPU --> 워드 = 16비트
- 32비트 CPU --> 워드 = 32비트
- 64비트 CPU --> 워드 = 64비트
즉, 워드는 CPU 설계에 따라 다르며 레지스터의 크기 = 워드 크기 인 경우가 많음.
27. 마이크로사이클(Microcycle)에 대한 설명으로 옳은 것은?
- 마이크로오퍼레이션을 수행하는데 필요한 시간으로 CPU Cycle Time이라고도 한다.
- 동기 가변식은 모든 마이크로오퍼레이션의 동작시간이 같아야 사용할 수 있다.
- CPU가 접근하는 메모리의 용량을 의미한다.
- 마이크로오퍼레이션들의 수행시간이 유사할 경우 동기 가변싱은 동기 고정식에 비해 제어가 간단하다.
1번
* 마이크로오퍼레이션(Micro-operation)
CPU가 한 클럭 사이클 내에 수행할 수 있는 기본적인 동작 단위.
- 레지스터 A ← 레지스터 B (데이터 전송)
- 레지스터 A ← A + B (덧셈)
- PC ← PC + 1 (주소 증가)
- 조건 점프 등
* 마이크로사이클(Microcycle)
하나의 마이크로오퍼레이션을 수행하는 데 걸리는 시간.
- 보통 하나의 클럭 주기(CPU cycle time)에 대응.
- CPU 내부에서는 하나의 명령어(Instruction)을 수행하기 위해 여러 마이크로오퍼레이션을 순차적으로 실행하며, 각각이 마이크로사이클 단위로 실행.
마이크로사이클 = 마이크로오퍼레이션 1개의 실행 시간 = 1클럭 주기 (보통)
* 동기식 제어 방식
CPU 내부의 제어는 보통 클록 신호(Clock)에 맞춰 동작하며, 제어 방법은 하기와 같음.
- 동기 고정식 (Synchronous Fixed)
- 모든 마이크로오퍼레이션이 고정된 시간(동일한 클럭 주기)에 실행됨.
- 마이크로사이클 시간이 가장 느린 오퍼레이션 기준으로 고정되어 비효율적.
- 제어 간단, 설계 쉬움
- 동기 가변식 (Synchronous Variable)
- 유사한 사이클을 가진 마이크로오퍼레이션을 그룹으로 묶어 각 그룹의 특성에 맞게 클럭 주기 길이를 다르게 설정.
- 동작 시간이 유사한 경우에는 효율적.
- 제어 복잡, 속도 향상 가능.
- 비동기식 (Asynchronous)
- 모든 마이크로오퍼레이션에 대해 서로 다른 사이클 시간을 부여.
- 제어 복잡, 거의 사용X
1. 마이크로오퍼레이션을 수행하는데 필요한 시간으로 CPU Cycle Time이라고도 한다. (또는 CPU Clock Time)
=> 마이크로사이클 = 마이크로오퍼레이션 1개의 실행 시간 = 1클럭 주기 (보통)
2. 동기 가변식은 모든 마이크로오퍼레이션의 동작시간이 같아야 사용할 수 있다.
=> 동작시간이 다른 경우 동기 가변식이 효율적, 같은 경우 동기 고정식.
3. CPU가 접근하는 메모리의 용량을 의미한다.
=> "주소 공간" 또는 "메모리 크기"에 해당하는 설명.
4. 마이크로오퍼레이션들의 수행시간이 유사할 경우 동기 가변싱은 동기 고정식에 비해 제어가 간단하다.
=> 동기 가변식이 동기 고정식에 비해 제어가 복잡.
28. 인터럽트의 체제의 기본적인 요소가 아닌 것은?
- 인터럽트 처리 기능
- 인터럽트 요청신호
- 인터럽트 상태와 DMA
- 인터럼트 서비스(취급) 루틴
3번
* 인터럽트란?
현재 실행 중인 프로그램의 흐름을 임시 중단하고, 우선순위가 높은 작업을 먼저 처리한 후 다시 원래 프로그램으로 돌아가는 CPU의 제어 메커니즘.
* 인터럽트가 필요한 이유
CPU는 굉장히 빠르게 작동하는데, 입출력(I/O) 장치는 상대적으로 느림.
입출력장치를 기다리지 않고 다른 일을 하다가 신호(Interrupt)가 오면 그 떄 처리.
(예) 키보드 입력, 프린터 출력 완료, 타이머 도달, 예외 상황 발생 등..)
* 인터럽트 체제(Interrupt Syster)의 구성 요소
- 인터럽트 요청 신호 (Interrupt Request)
: 외부 장치 또는 내부 예외가 CPU에 보냄. - 인터럽트 처리 기능 (Interrupt Handling)
: CPU가 현재 작업 저장 후 인터럽트 처리. - 인터럽트 서비스 루틴 (Interrupt Service Routine, ISR)
: 인터럽트 발생 시 실행되는 루틴. (함수처럼) - 우선순위 판단 및 컨트롤 로직
: 어떤 인터럽트를 먼저 처리할지 판단. - 상태 저장/복구 메커니즘
: 현재 실행 중이던 정보 저장 및 복귀.
1. 인터럽트 처리 기능
=> Handling
2. 인터럽트 요청신호
=> IRQ ()
3. 인터럽트 상태와 DMA
=> * DMA (Direct Memory Access) : CPU를 거치지 않고 메모리 <-> 장치 직접 전송.
4. 인터럼트 서비스(취급) 루틴
=> ISR (Interrupt Service Routine)
* DMA (Direct Memory Access)
CPU를 거치지 않고, I/O 장치가 메모리와 직접 데이터 전송을 수행하는 방식.
I/O 장치 ↔ DMA 컨트롤러 ↔ 메모리
일반적인 데이터 전송 방식 : I/O 장치 ↔ CPU ↔ 메모리
=> 대용량 데이터를 다룰 때는 지속적인 CPU의 개입으로 성능 낭비가 큼.
- CPU가 DMA에게 전송 요청
- DMA가 CPU에게 제어권 요청
- CPU는 제어권을 넘기고 대기 상태
- DMA가 데이터를 메모리 <-> I/O 장치로 전송
- 전송 완료되면 인터럽트로 CPU에게 완료 알림.
(CPU는 DMA와 상태정보 및 제어정보만을 주고 받음)
=> CPU 개입 최소화 (CPU는 다른 작업 가능), 데이터 전송 속도 향상, 대용량 전송에 적합.
29. RAM과 관련한 설명으로 틀린 것은?
- RAM은 데이터나 프로그램을 일시적으로 기억할 때 사용되며, 프로그램의 수행에 따라 그 내용이 계속 변할 수 있다.
- DRAM은 반도체 자체에 데이터를 저장하는 반면, SRAM은 데이터를 커패시터에 저장하기 때문에 추가적인 충전이 필요하다.
- 일반적으로 SRAM은 DRAM보다 접근속도(Access Time)가 빠르다.
- SRAM의 기억 소자는 플립플롭으로 구성되어 있다.
2번
* RAM (Random Access Memory, 임의 접근 메모리)
- CPU가 직접 접근할 수 있는 주기억장치 (Main Memory)
- 읽기/쓰기 모두 가능
- 전원이 꺼지면 내용이 지워짐 (휘발성)
- 프로그램 실행 중 데이터를 일시적으로 저장함
- SRAM (Static RAM) : 빠르지만 비쌈, 캐시 메모리에 사용.
- DRAM (Dynamic RAM) : 느리지만 저렴, 일반적인 메인 메모리에 사용.
| 항목 | SRAM | DRAM |
| 저장 방식 | 플립플롭 회로 | 커패시터(축전기) + 트랜지스터 |
| 리프레시(refresh) | ❌ 불필요 | ✅ 필요 (전하가 방전되기 때문) |
| 속도 | 빠름 | 느림 |
| 가격 | 비쌈 | 저렴함 |
| 집적도 | 낮음 | 높음 |
| 용도 | CPU 캐시 메모리 | 컴퓨터 주 기억장치 |
2. DRAM은 반도체 자체에 데이터를 저장하는 반면, SRAM은 데이터를 커패시터에 저장하기 때문에 추가적인 충전이 필요하다.
=> 설명이 바뀜.
30. 기억장치에 기억된 정보를 접근(Access)할 때 주소를 사용하는 것이 아니라 기억된 정보를 이용하여 원하는 정보를 찾는 기억장치는?
- 주기억장치
- 연관기억장치
- 제어기억장치
- 가상기억장치
2번
* 주소지정 기억장치 (addressed memory)
주소(Address)를 기반으로 데이터를 찾는 기억장치. ( RAM, ROM )
예) 100번지에 있는 데이터를 읽어와
* 연관 기억장치 (Associative Memory) = 내용주소 지정 기억장치 (Content Addressable Memory, CAM)
어떤 값인지(내용)를 기준으로 데이터를 찾는 기억장치. ( CAM, TLB 등 )
예) 데이터가 101인 애를 찾아줘
1. 주기억장치
=> RAM 등, CPU가 직접 접근하는 일반적인 메모리. (주소 기반)
2. 연관기억장치
=> 내용 기반으로 검색 가능한 메모리.
3. 제어기억장치 (Control Memory)
=> 마이크로명령어를 저장하는 ROM형태의 기억장치.
4. 가상기억장치
=> 물리 메모리보다 큰 주소 공간을 제공하기 위한 OS기술.
(조합 논리 회로)
31. 최대 2n개의 입력이 들어와 n개의 선택선(Selection Line)에 의해서 1개의 출력을 내보내는 논리회로는?
- Multiplexer
- Demultiplexer
- Contributor
- Changer
1번
* 논리회로 (Logical Circuit)
입력신호를 0과 1로 받아서 처리하는 회로.
AND, OR, NOT 과 같은 논리 연산을 하거나 어떤 값을 선택하거나 분배하는 동작을 수행.
*선택기(선택 회로) 종류
(1) Multiplexer (멀티플렉서, MUX)
2ⁿ 개의 입력 중에서, n개의 선택선으로 1개만 골라서 출력하는 회로.
입력 수 : 최대 2ⁿ 개
선택선 수 : n개
출력 : 1개
(2) Demultiplexer (디멀티플렉서, DEMUX)
1개의 입력을 받아서, n개의 선택선을 통해 2ⁿ 개의 출력 중 하나로 데이터 분배.
입력 수 : 1개
선택선 수 : n개
출력 : 2ⁿ 개
| 구분 | Multiplexer | Demultiplexer |
| 방향 | 여러 입력 → 1 출력 | 1 입력 → 여러 출력 |
| 선택선 수 | n개 | n개 |
| 입력/출력 수 | 2ⁿ 입력 / 1 출력 | 1 입력 / 2ⁿ 출력 |
| 기억 포인트 | "MUX는 선택!" | "DEMUX는 분배!" |
32. 자기 테이프에 대한 설명으로 틀린 것은?
- Direct access가 가능하다.
- 일반적으로 각 블록 사이에 간격(gap)이 존재한다.
- 자기 디스크와 마찬가지로 연속된 블록들 단위로 읽히고 기록될 수 있다.
- Sequential access가 가능하다.
1번
* 보조 기억장치란?
RAM 처럼 전원이 꺼지면 사라지는 주기억장치와 달리, 오래 보존할 수 있는 저장 장치.
예) 자기 디스크(HDD), SSD, 자기 테이프, 광 디스크(CD/DVD) 등
* 자기 테이프 (Magnetic Tape)
플라스틱 필름 위에 자성 물질을 입혀 만든 긴 띠 형태의 저장장치. (카세트 테이프처럼 생긴 장치)
보통 백업, 아카이빙(장기 보존)에 사용.
* 자기 테이프의 특징 *
- Sequential Access (순차 접근)
데이터를 처음부터 차례대로 읽거나 써야함 (책처럼 앞에서부터 넘겨야함) - 블록 단위 저장
여러 레코드(데이터 묶음)을 하나의 블록 단위로 저장. - Gap 존재
각 블록 사이에 간격(Gap)이 존재해, 다음 블록 시작을 구분.
1. Direct access가 가능하다.
=> 순차 접근만 가능. 필요한 위치까지 앞으로 감기 해야 함.
2. 일반적으로 각 블록 사이에 간격(gap)이 존재한다.
=> Gap은 블록 구분, 기록 안정성을 위해 필요.
3. 자기 디스크와 마찬가지로 연속된 블록들 단위로 읽히고 기록될 수 있다.
=> 자기 테이프는 보통 블록 단위로 I/O처리
4. Sequential access가 가능하다.
=> 순차 접근이 기본 특성!
* 자기 테이프 vs 자기 디스크
| 항목 | 자기 테이프 | 자기 디스크 (HDD) |
| 접근 방식 | 순차 접근 | 직접 접근 가능 |
| 속도 | 느림 (앞에서부터 찾아야 함) | 빠름 (바로 찾아감) |
| 사용 목적 | 장기 보관, 백업 | 주기억 보조장치 |
| 형태 | 카세트처럼 길다 | 원반(플래터) 형태 |
33. 모든 처리장치 또는 프로세스 요소(PE:Processing Element)들이 하나의 제어 유닛(Control Unit)의 통제하에 동기적으로 동작하는 시스템은?
- 다중 처리기 (Multi Processor)
- 비균열 처리기 (Nonuniform Processor)
- 배열 처리기 (Array Processor)
- 클러스터 처리기 (Cluster Processor)
3번
* 병렬 처리 시스템이란?
하나의 작업을 여러 개의 처리 장치(PE)가 동시에 나눠서 처리하는 시스템
* 병렬 처리 분류 - Flynn의 분류
- SISD (Single Instruction, Single Data)
=> 일반적인 순차적 CPU 구조 - SIMD (Single Instruction, Multiple Data)
=> 명령은 하나, 데이터를 나눠서 동시에 처리 - MISD (Multiple Instruction, Single Data)
=> 거의 사용되지 않음 - MIMD (Multiple Instruction, Multiple Data)
=> 서로 다른 명령어와 데이터를 동시에 처리 (멀티코어 등)
* 배열 처리기 (Array Processor)
SIMD 구조의 대표적인 예시로 고속 벡터 연산, 과학 계산, 이미지 처리 등에 적합.
- 제어 유닛 (Control Unit) : 하나만 있음. 모든 PE를 동일하게 지시함.
- 처리 유닛 (Processing Element, PE) : 여러개 있음. 각자 동일한 명령을 실행, 서로 다른 데이터를 처리.
1. 다중 처리기 (Multi Processor)
=> 여러 CPU가 각자 명령어, 데이터 처리하는 MIMD구조
2. 비균열 처리기 (Nonuniform Processor)
=> 실제로 사용되는 용어X
3. 배열 처리기 (Array Processor)
=> 하나의 제어 유닛과 여러 개의 처리 유닛이 동기적으로 실행하는 SIMD구조.
4. 클러스터 처리기 (Cluster Processor)
=> 여러 독립 시스템(CPU + 메모리)을 연결한 MIMD형 병렬 시스템.
34. 인스트럭션 수행을 위한 메이저 상태를 설명한 것으로 옳은 것은?
- Execute 상태는 간접주소 지정방식의 경우에만 수행된다.
- 명령어를 기억장치 내에서 가져오기 위한 동작을 fetch라 한다.
- CPU의 현재 상태를 보관하기 위한 기억장치 접근을 indirect라 한다.
- 기억장치의 현재 상태를 말한다.
2번
* 인스트럭션 사이클 (Instruction Cycle)
CPU가 여러 단계의 상태(State)를 거쳐 명령어를 처리하는 과정.
* 인스트럭션 수행의 주요 상태 (Major States)
- Fetch : 명령어를 메모리에서 가져오기 (Instruction Register에 저장)
- Decode : 가져온 명령어를 해석 (어떤 연산인지, 어떤 주소를 사용하는지 등)
- Execute : 실제 연산 수행 (덧셈, 데이터 이동, 분기 등)
- Indirect : 주소가 간접 지정일 경우 실제 주소 추적.
- Interrupt : 인터럽트 발생 시 상태 저장 및 ISR 수행.
1. Execute 상태는 간접주소 지정방식의 경우에만 수행된다.
=> Execute는 모든 명령어에 대해 수행되는 기본 상태.
간접주소 방식은 Execute 전에 간접주소 해석이 추가 될 수 있음.
2. 명령어를 기억장치 내에서 가져오기 위한 동작을 fetch라 한다.
=> CPU가 명령어 주소(PC)로부터 명령어를 메모리에서 읽어오는 과정.
3. CPU의 현재 상태를 보관하기 위한 기억장치 접근을 indirect라 한다.
=> CPU 상태 저장은 보통 Context Save나 스택, PCB에 저장.
=> Indirect는 간접 주소 지정 방식을 의미.
4. 기억장치의 현재 상태를 말한다.
=> 메모리 상태가 아닌 CPU의 동작 단계
35. 인터럽트 벡터에 필수적인 것은?
- 분기번지
- 드럼
- 제어규칙
- 누산기
1번
* 인터럽트 (Interrupt)
CPU가 현재 작업 중, 외부나 내부에서 이벤트가 발생하면 그 처리를 위해 현재 흐름을 일시 중단하고,
우선순위가 높은 작업(인터럽트 서비스 루틴, ISR)을 먼저 수행한 뒤 다시 원래 작업으로 돌아가는 것.
* 인터럽트 처리 흐름
- 인터럽트 발생
- 현재 실행 중인 작업의 상태(PC 등)를 저장.
- 인터럽트 벡터(Interrupt Vector)를 참조.
- 해당 인터럽트 서비스 루틴(ISR) 주소로 분기(jump)
- ISR 실행 후, 원래 상태로 복귀.
* 인터럽트 벡터 (Interrupt Vector)
인터럽트 발생 시 CPU가 어디로 가야 할지를 알려주는 주소표(목차)
- 종류별 인터럽트마다 고유한 서비스 루틴(ISR)이 존재.
- 이 루틴들의 시작 주소를 인터럽트 벡터 테이블에 미리 정리해둠.
- CPU는 인터럽트 발생 -> 벡터 테이블에서 주소 찾아 -> 분기(jump)
즉, ISR의 분기 주소를 저장한 테이블.
1. 분기번지 (Branch Address)
=> 인터럽트 발생 시, 해당 ISR로 분기하기 위한 주소 정보.
2. 드럼 (Drum)
=> 오래된 자기식 저장 장치
3. 제어규칙 (Control Rule)
=> 관련X
4. 누산기
=> CPU 내 연산용 레지스터.
36. Tc = 50ns, Tm = 400ns인 시스템에서 캐쉬의 적중률이 70%라 가정할 때, 평균 기억장치 액세스 시간(Ta)은?
(단, Tc는 캐시 접근 시간, Tm은 주기억장치 접근 시간이다.)
- 67.5ns
- 85ns
- 120ns
- 155ns
4번
Tc : 캐시 메모리 접근 시간 (Cache Access Time)
Tm : 주기억장치 접근 시간 (Main Memory Access Time)
h : 적중률 (Hit Ratio)
Ta : 평균 접근 시간 (Average Access Time)
* 캐시 적중(Hit)과 실패(Miss)
- CPU가 데이터를 찾을 때 캐시에서 찾으면 "Hit", 못찾으면 "Miss"
- Miss인 경우 -> 캐시에서 실패 -> 주기억장치 접근 필요 -> 추가 시간 소요
* 평균 접근 시간 공식
Ta = (적중률 x 캐시 접근 시간) + (실패율 x 전체 접근 시간)
Ta = h × Tc + (1 - h) × Tm
Ta = 0.7 x 50 + (1-0.7) x 400
= 35 + 120
= 155
37. 레지스터에 대한 설명으로 틀린 것은?
- PC(Program Counter) : 다음에 인출할 명령어의 주소를 갖는 레지스터.
- IR(Instruction Register) : 주기억장치인 RAM으로부터 가장 최근에 인출한 명령어를 저장하고 있는 레지스터.
- MBR(Memory Buffer Register) : 액세스할 기억장치의 주소를 갖는 레지스터.
- AC(Accumulator) : 연산의 결과를 일시적으로 저장하는 레지스터.
3번
* 주요 레지스터
- 프로그램 카운터 (PC) : 다음에 실행할 명령어의 주소 저장.
- 명령어 레지스터 (IR) : 메모리에서 가져온 명령어 자체 저장.
- 메모리 주소 레지스터 (MAR) : 엑세스할 메모리의 주소 저장.
- 메모리 버퍼 레지스터 (MBT) : 메모리에서 읽어오거나 쓸 데이터 값 저장.
- 누산기 (AC) : 연산 결과를 일시적으로 저장.
- 상태 레지스터 (SR) : 연산 결과에 따른 플래그(오버플로우, 캐리 등) 저장.
1. PC(Program Counter) : 다음에 인출할 명령어의 주소를 갖는 레지스터.
=> CPU는 PC가 가리키는 주소에서 명령어를 Fetch함.
2. IR(Instruction Register) : 주기억장치인 RAM으로부터 가장 최근에 인출한 명령어를 저장하고 있는 레지스터.
=> PC가 가리킨 주소의 명령어를 IR에 저장.
3. MBR(Memory Buffer Register) : 액세스할 기억장치의 주소를 갖는 레지스터.
=> 주소는 MAR에 저장, MBR은 데이터 저장.
4. AC(Accumulator) : 연산의 결과를 일시적으로 저장하는 레지스터.
=> 산술/논리 연산 결과 저장.
(조합 논리 회로)
38. 두 개 이상의 입력이 있을 경우 입력 하나에서 나머지 입력들을 뺄셈 연산해 그 차이를 출력하는 조합 논리회로는?
- Adder
- Comparator
- Decoder
- Subtractor
4번
* 조합 논리 회로 (combinational logic circuit)
입력 신호가 주어졌을 때, 그 순간의 입력 조합에 따라 즉시 출력이 결정되는 회로.
- Adder (가산기) : 두 수를 더함.
- Subtractor (감산기) : 한 수에서 다른 수를 뺌.
- Comparator (비교기) : 두 수를 비교해 같음/다름/크고 작음 등을 판단.
- Decoder (디코더) : 입력 코드를 특정 출력으로 변환 (n비트 입력 -> 2ⁿ 개 출력)
- Encoder (인코더) : 여러 입력 중 하나만 활성화되었을 때 그 입력의 번호 출력. (입력 위치를 코드로 반환)
- Multiplexer (MUX) : 여러 입력 중 선택선에 따라 하나만 출력.
- Demultiplexer (DEMUX) : 하나의 입력을 여러 출력 중 선택된 라인에 출력.
* Subtractor (감산기)
두 개 이상의 입력을 받아서, 하나에서 나머지를 빼서 결과를 출력하는 회로.
- Half Subtractor : 입력 2개 (피감수, 감수), 차이(Diff)와 차용(Borrow) 출력.
- Full Subtractor : 입력 3개 (피감수, 감수, 이전 차용), 결과 차(Diff), 차용 출력.
(감수 : 빼는 수 / 피감수 : 빼지는 수 / 차용 : 빌려오는 비트)
1. Adder
=> 가산기, 두 값을 더하는 조합 논리 회로. ( A + B )
2. Comparator
=> 두 값을 비교해 같거나 큰지 판단하는 회로. ( A > B, A = B, A < B 판단 )
3. Decoder
=> n비트 입력 -> 4( 2ⁿ )개 출력 라인을 활성화.
4. Subtractor
=> 입력된 수들을 뺄셈 연산하여 결과 출력. ( A - B )
39. 중앙처리장치가 인출(fetch)인 상태에서 주소부분이 직접 주소일 경우 제어점을 제어하기 위한 데이터는?
- 플래그
- 프로그램 카운터
- 인터럽터 호출 신호
- 명령어의 명령 코드
4번
* 인출(Fetch)
CPU가 주기억장치로부터 명령어를 가져오는 과정.
이 때 프로그램 카운터(PC)는 다음 명령어의 주소를 기리키고 있고,
그 주소를 따라 메모리에서 명령어를 가져와
명령어 레지스터(IR)에 저장.
* 명령어 형식
- Opcode : 무슨 동작을 할 것인가 (예) ADD, LOAD, STORE 등)
- 주소 필드 : 어디에 있는 데이터를 사용할 것인가 (메모리 주소 등)
* 직접 주소 방식 (Direct Addressing)
주소 필드에 실제 데이터가 있는 메모리 주소가 바로 적혀 있는 방식.
* 제어점
CPU 내부에서 어떤 동작을 할 지 결정하는 제어 신호(Control Signal)의 흐름.
이 제어신호를 결정하는 기준이 되는 것이 Opcode(명령어 코드).
즉, CPU가 명령어를 Fetch한 후, 명령어 코드(Op-code)를 해석해서 어떤 제어신호를 발생시킬지 결정.
1. 플래그
=> 산술/논리 연산 결과에 대한 상태 (캐리, 오버플로우 등)
2. 프로그램 카운터(PC)
=> 다음 명령어의 주소를 저장 -> fetch의 주소 지정에는 사용되지만, 제어점 제어용 데이터는 아님.
3. 인터럽터 호출 신호
=> 인터럽트 발생 여부 판단용. (Fetch 상태와 무관)
4. 명령어의 명령 코드 (Opcode)
=> 어떤 제어 신호를 발생시킬지 결정하는 핵심 요소.
40. 입출력 채널과 관련한 설명으로 틀린 것은?
- 선택 채널(Selector channel)은 랜덤 방식으로 데이터를 전송한다.
- 다중 채널(Multiplexer channel)은 연결된 입출력 장치들을 시분할(Time Sharing)하여 입출력 할 수 있다.
- 블록 다중 채널(Block multiplexer channel)은 선택 채널과 다중 채널을 결합한 방식으로 볼 수 있다.
- 채널 중 선택 채널은 비교적 고속 전송에 적합한 방식이다.
1번
* 입출력 채널
CPU와 입출력 장치 간의 데이터 전송을 전담하는 장치 또는 하드웨어 모듈.
마치 입출력 담당 CPU처럼, 독립적으로 I/O 처리를 수행하여 CPU가 입출력에 신경 쓰지 않고 연산에 집중할 수 있도록 도와줌.
- 선택 채널 (Selector Channel)
- 한 번에 1개의 I/O 장치만 연결해서 처리.
- 고속 입출력 장치용.
- 데이터 전송이 연속적으로, 전용 채널처럼 수행.
- 예) 디스크, 자기 테이프 등 블록 단위 전송 장치.
- 다중 채널 (Multiplexer Channel)
- 여러 개의 I/O 장치를 시분할 방식(Time Sharing)으로 연결.
- 한 채널이 여러 장치를 번갈아가며 처리.
- 저속 장치용
- 예) 키보드, 프린터, 마우스 등
- 블록 다중 채널 (Block Multiplexer Channel)
- 선택 채널 + 다중 채널의 복합 형태.
- 여러 장치를 연결하되, 블록 단위로 I/O를 나눠 처리.
- 고속 장치도 시분할 처리 가능.
- CPU와 병렬로 처리되며 성능이 우수.
| 채널 종류 | 특징 | 용도 |
| 선택 채널 (Selector) | 한 번에 하나, 연속 전송 | 고속 장치 (디스크 등) |
| 다중 채널 (Multiplexer) | 시분할, 여러 장치 번갈아 처리 | 저속 장치 (프린터 등) |
| 블록 다중 채널 (Block MUX) | 선택 + 다중 채널 혼합, 블록 단위 전송 | 고속 장치 + 시분할 필요 시 |
1. 선택 채널(Selector channel)은 랜덤 방식으로 데이터를 전송한다.
=> 고속 장치 전용으로, 순차적/연속적 전송 방식.