기본 콘텐츠로 건너뛰기

방송대 컴퓨터과학개론 10강: 명령어 실행과 CPU·입출력 구조

0-썸네일-요약노트-컴퓨터과학개론-10강

방송대 컴퓨터과학개론 10강: 명령어 실행과 CPU·입출력 구조

프로그램의 한 줄은 곧바로 계산 결과가 되지 않습니다. 먼저 CPU가 이해하는 명령어와 주소로 표현되고, 레지스터와 제어신호를 거쳐 인출·해독·실행·저장된 뒤, 필요하면 입출력장치와 데이터를 교환합니다. 이 글은 명령어 집합부터 주소지정방식, 처리장치·제어장치, 입출력 제어와 병렬처리까지를 ‘명령어가 하드웨어 안에서 실제로 움직이는 경로’로 연결합니다.

하나의 계산은 표현·제어·이동·중첩의 네 층을 통과한다

식 W = X × (Y + Z)를 계산한다고 생각해 봅시다. 사람에게는 한 줄이지만 컴퓨터에는 어떤 연산을 할지, 피연산자가 어디에 있는지, 중간 결과를 어디에 둘지, 각 회로를 언제 작동시킬지를 나타내는 정보가 필요합니다. 입력이나 출력이 포함되면 CPU와 장치 사이의 속도 차이도 조정해야 합니다.

처리 층핵심 질문관련 개념결과
명령어 표현무엇을 어디의 데이터에 수행하는가ISA, 연산자 코드, 오퍼랜드, 주소지정방식CPU가 해석할 비트 패턴
CPU 내부 제어어느 레지스터와 회로를 어떤 순서로 작동시키는가처리장치, 제어단어, 제어장치, 명령어 사이클연산 수행과 레지스터 값 갱신
입출력 이동속도가 다른 장치와 누가 데이터를 교환하는가제어기, 인터페이스, 버스, 프로그램·인터럽트·DMA·채널장치와 주기억장치 사이의 정보 전달
실행 중첩서로 독립적인 일을 어떻게 함께 처리하는가파이프라인, 멀티코어, GPGPU시간적·공간적 병렬성 활용

추적 기준: 명령어 문제는 ‘비트로 어떻게 쓰는가’, CPU 문제는 ‘어떤 신호가 어디로 가는가’, 입출력 문제는 ‘CPU가 언제 얼마나 관여하는가’, 병렬처리 문제는 ‘어떤 작업들이 독립적인가’를 먼저 물으면 됩니다.

명령어 집합은 소프트웨어와 하드웨어가 만나는 약속이다

명령어 집합 구조(ISA, Instruction Set Architecture)는 컴퓨터 시스템이 제공하는 기본 명령어들의 집합과 형식, 주소지정방식 등을 정하는 개념입니다. 소프트웨어는 ISA에 정의된 명령어로 수행할 일을 표현하고, 하드웨어는 그 명령어를 해석하고 실행하도록 구성됩니다. 따라서 ISA가 정해지면 이에 상응하는 하드웨어 구조도 영향을 받습니다.

CISC는 복잡한 명령어와 여러 주소지정방식을 포함하여 프로그램에 필요한 전체 명령어 수를 줄이고 실행 시간을 단축하려는 구조입니다. 대신 연산 코드의 해석과 실행을 담당하는 제어장치가 복잡해질 수 있습니다. RISC는 명령어의 수와 동작을 단순화하고 명령어 길이를 가능한 한 짧게 하여 빠른 실행과 많은 처리량을 지향합니다. 제어장치는 비교적 단순하며 일반적으로 하드웨어 회로로 구성됩니다.

판단 축CISCRISC
명령어 성격복잡한 명령어와 많은 주소지정방식적고 단순한 명령어, 짧은 길이 지향
프로그램의 명령어 수복잡한 일을 한 명령어로 처리해 줄일 수 있음단순 명령의 조합이 필요할 수 있음
제어장치명령 해석·수행 구조가 복잡해질 수 있음비교적 단순하며 직접 회로 방식과 잘 맞음
강의의 연결마이크로 프로그램 방식에서 주로 사용직접 회로 방식에서 주로 사용

오개념 교정: RISC는 ‘프로그램 전체의 명령어가 언제나 더 적다’는 뜻이 아닙니다. 각 명령어의 종류와 동작을 줄여 하드웨어와 실행 단계를 단순하게 만들려는 관점이며, 같은 일을 표현할 때 여러 단순 명령이 필요할 수 있습니다.

연산자 코드와 오퍼랜드가 명령어의 행동과 대상을 나눈다

명령어는 실행에 필요한 정보를 담으며 기본적으로 연산자 코드(OP code)와 오퍼랜드(operand)로 이루어집니다. 연산자 코드는 CPU가 수행할 연산의 종류를 나타내고, 오퍼랜드는 그 연산에 사용할 데이터나 데이터가 저장된 기억장치 주소를 나타냅니다. 연산자 코드에 할당한 비트 수가 늘면 구분할 수 있는 명령어의 최대 개수도 늘어납니다.

기본 명령어는 역할에 따라 다음처럼 연결할 수 있습니다.

  • 데이터 전송 명령어: 레지스터와 레지스터, 주기억장치와 레지스터, 기억장치와 기억장치 사이에서 데이터를 이동합니다.
  • 데이터 처리 명령어: 산술·논리·비트 단위·시프트 연산으로 데이터를 바꿉니다.
  • 프로그램 제어 명령어: 무조건 또는 조건에 따라 다음 실행 위치를 바꿉니다.
  • 입출력 명령어: 보조기억장치나 입출력장치와 정보를 교환하고 인터럽트 요구를 처리합니다.

예를 들어 덧셈 명령에서 ‘ADD’는 행동을, 레지스터 번호나 기억장치 주소는 대상을 가리킵니다. 같은 ADD라도 오퍼랜드에 실제 값이 들어 있는지, 주소가 들어 있는지에 따라 데이터를 찾는 경로가 달라지므로 명령어 형식과 주소지정방식을 함께 읽어야 합니다.

주소 수가 줄면 숨은 저장 장소가 계산을 이어 준다

오퍼랜드의 개수에 따라 3주소, 2주소, 1주소, 0주소 명령어로 구분합니다. 주소 수가 많으면 한 명령어에 원본과 결과 위치를 구체적으로 표시할 수 있고, 주소 수가 줄면 레지스터·누산기·스택처럼 규칙으로 정해진 저장 장소가 생략된 주소를 대신합니다.

학습을 위해 강의의 식 W = X × (Y + Z)가 각 형식에서 어떻게 이어지는지 정리하면 다음과 같습니다.

# 3-address: two sources and one destination are explicit
ADD Y, Z, R1      # R1 = Y + Z
MUL X, R1, W      # W = X * R1

# 2-address: one operand also receives the result
MOVE Y, R1
ADD Z, R1         # R1 = Z + R1
MUL X, R1         # R1 = X * R1
MOVE R1, W

# 1-address: the accumulator AC is implicit
LOAD Y            # AC = Y
ADD Z             # AC = Z + AC
MUL X             # AC = X * AC
STORE W           # W = AC

# 0-address: operands are taken from the stack
PUSH Y
PUSH Z
ADD
PUSH X
MUL
POP W

3주소 형식은 명령 수가 적지만 주소 필드가 많아 한 명령어가 길어질 수 있습니다. 2주소 형식은 가장 많이 사용되는 형식이며 한 피연산자 자리에 결과를 저장합니다. 1주소 형식은 누산기(AC)를 암묵적으로 사용하고, 0주소 형식은 스택의 맨 위 자료를 꺼내 연산하고 결과를 다시 스택에 넣습니다.

판정 기준: 주소 수는 계산에 필요한 데이터의 개수가 아니라 명령어 안에 명시된 주소 필드의 개수입니다. 0주소 ADD도 두 값을 더하지만 두 값의 위치가 스택 규칙에 의해 생략됩니다.

명령어는 연산 코드와 오퍼랜드를 비트 필드로 저장한다

CPU가 명령어를 처리하려면 기호가 아니라 비트 패턴으로 주기억장치에 저장되어야 합니다. 강의의 1주소 예에서는 연산자 코드와 오퍼랜드에 각각 4비트를 사용합니다. 연산 코드 LOAD, ADD, MUL, STORE를 각각 0000, 0010, 0100, 1000으로, 주소 W, X, Y, Z를 각각 0001, 0010, 0011, 0100으로 정합니다.

기호 명령연산 코드오퍼랜드 주소주기억장치에 저장되는 8비트
LOAD Y000000110000 0011
ADD Z001001000010 0100
MUL X010000100100 0010
STORE W100000011000 0001

예를 들어 LOAD Y는 앞 4비트 0000이 LOAD를, 뒤 4비트 0011이 Y의 주소를 뜻합니다. 같은 비트열이라도 필드 경계와 약속을 모르면 의미를 결정할 수 없습니다. 이것이 명령어 형식과 ISA가 하드웨어 해석의 기준이 되는 이유입니다.

주소지정방식은 오퍼랜드에서 실제 데이터까지의 경로다

주소지정방식은 연산에 사용할 데이터가 기억장치의 어디에 있는지를 지정하는 방법입니다. 명령어의 개수와 길이를 줄이면서 기억장치 사용의 융통성을 높이기 위해 여러 방식을 사용합니다. 문제를 풀 때는 오퍼랜드의 겉모양보다 몇 번 따라가야 실제 데이터에 도착하는가를 추적해야 합니다.

방식오퍼랜드에 든 것실제 데이터까지의 경로강의의 주요 활용·특징
즉시실제 데이터명령어 → 데이터접근이 빠르고 레지스터·변수 초기화에 유용
직접주기억장치 주소 i명령어 → 기억장치 i의 데이터한 번의 기억장치 주소 참조
간접주기억장치 주소 i명령어 → 기억장치 i의 주소 j → 기억장치 j의 데이터주소를 한 단계 더 따라감
레지스터레지스터 번호 i명령어 → 레지스터 i의 데이터주기억장치 대신 CPU 내부 레지스터 사용
레지스터 간접레지스터 번호 i명령어 → 레지스터 i의 주소 j → 기억장치 j의 데이터레지스터가 기억장치 주소를 보관
상대변위 또는 주소 계산용 내용명령어 내용 + 지정 레지스터 값 → 유효주소PC는 분기, 인덱스 레지스터는 배열, 베이스 레지스터는 기준 주소에 활용

직접 주소와 간접 주소는 모두 오퍼랜드에 주소 i가 있다는 점 때문에 혼동하기 쉽습니다. 직접 방식에서는 i가 데이터의 위치이고, 간접 방식에서는 i에 들어 있는 값 j가 다시 실제 데이터의 위치입니다. 레지스터 방식과 레지스터 간접 방식도 같은 원리로 구분됩니다. 전자는 레지스터의 값 자체가 데이터이고 후자는 그 값이 주기억장치 주소입니다.

잘못된 접근: ‘레지스터가 빠르니 레지스터 간접 방식도 실제 데이터가 레지스터에 있다’고 판단하면 안 됩니다. 레지스터 간접 방식에서 레지스터는 주소를 보관하고, 실제 데이터는 그 주소가 가리키는 주기억장치에 있습니다.

제어장치 구현은 변경 용이성과 실행 속도를 절충한다

명령어를 실행하려면 산술·논리연산 회로와 명령어 수행 순서를 작동시키는 제어신호가 필요합니다. 제어장치를 구현하는 대표 방식은 마이크로 프로그램 방식과 직접 회로 방식입니다.

마이크로 프로그램 방식은 산술·논리연산과 명령어 수행 순서를 제어기억장치에 저장된 비트 패턴인 마이크로 연산으로 작동시킵니다. 한 기계 명령어를 여러 마이크로 연산으로 구현하므로 명령어 추가나 집합 변경에 대응하기 쉽고 CISC 구조에서 주로 사용됩니다.

직접 회로 방식은 연산과 명령어 수행 회로가 기억장치에 의존하지 않고 직접 구성된 제어회로에 의해 작동합니다. 실행은 빠르지만 명령어 집합이 바뀌면 회로 변경이 필요해 적응이 어렵고, 명령어 수가 적은 RISC 구조에서 주로 사용됩니다.

비교 항목마이크로 프로그램 방식직접 회로 방식
제어 근거제어기억장치의 마이크로 연산 비트 패턴직접 구성된 제어회로
명령어 변경·추가비교적 용이회로 변경이 필요해 어려움
수행 특성여러 마이크로 연산으로 한 명령을 구현빠른 수행
주요 연결CISCRISC

처리장치는 레지스터 사이의 작은 연산을 조합한다

중앙처리장치 안의 처리장치는 산술논리연산장치(ALU)와 레지스터를 묶어 이르는 표현입니다. 범용 레지스터는 여러 데이터에 공통으로 사용할 수 있고, 특수 레지스터는 명령 실행 과정에서 정해진 역할을 맡습니다.

레지스터보관하는 정보명령 실행에서의 역할
AC(누산기)데이터나 연산 결과1주소 명령의 암묵적 피연산자와 중간 결과를 임시 저장
PC(프로그램 카운터)다음에 수행할 명령어의 주기억장치 주소다음 인출 위치를 제공
IR(명령어 레지스터)현재 실행 중인 명령어인출된 명령어를 해독·실행하는 동안 유지
MAR(기억장치 주소 레지스터)현재 접근할 주기억장치 주소주소 버스로 내보낼 위치를 임시 저장
MBR(기억장치 버퍼 레지스터)주기억장치에서 읽거나 쓸 데이터CPU와 주기억장치 사이의 데이터 이동을 임시 중계

마이크로 연산은 이 레지스터들의 값을 옮기거나 바꾸는 작은 동작입니다. R0 ← R1 같은 레지스터 전송, R0 ← R1 + R2 같은 산술 연산, AND·OR·NOT·XOR 같은 논리 연산, 왼쪽·오른쪽 시프트로 구분됩니다. 강의의 8비트 양수 예에서 38을 왼쪽으로 한 비트 시프트하면 76, 오른쪽으로 한 비트 시프트하면 19가 되어 각각 2배와 2분의 1 관계를 확인할 수 있습니다.

구분 기준: MAR은 ‘어디에 접근할지’를, MBR은 ‘무엇을 읽거나 쓸지’를 보관합니다. 주소 버스와 연결되는 것은 MAR, 데이터 버스와 연결되는 것은 MBR이라는 흐름으로 기억하십시오.

제어단어는 한 순간의 데이터 경로를 비트로 지시한다

처리장치의 MUX 입력 선택, 레지스터 쓰기, ALU 연산, 시프트 동작을 직접 제어하려면 각 선택을 비트 필드로 묶은 제어단어가 필요합니다. 강의의 16비트 제어단어는 A·B·D·F·H 필드로 구성됩니다. A와 B는 두 입력, D는 결과를 쓸 레지스터, F는 연산, H는 시프트를 고릅니다.

강의의 예인 R0 ← R1 + R2를 필드별로 따라가 봅시다.

  1. A에서 R1을 고르는 값은 010입니다.
  2. B에서 R2를 고르는 값은 011입니다.
  3. D에서 결과를 쓸 R0을 고르는 값은 000입니다.
  4. F에서 덧셈을 고르는 값은 0001입니다.
  5. H에서 시프트하지 않음을 고르는 값은 000입니다.
  6. 필드 순서대로 이어 붙이면 010 011 000 0001 000, 즉 0100110000001000이 됩니다.

중요한 점은 16비트 수를 통째로 외우는 것이 아니라 각 필드가 데이터 경로의 어느 선택기를 제어하는지 이해하는 것입니다. 입력 레지스터를 바꾸면 A·B가, 목적 레지스터를 바꾸면 D가, 덧셈을 논리 연산으로 바꾸면 F가, 결과를 시프트하면 H가 달라집니다.

제어장치는 인출에서 저장까지 명령어 사이클을 이어 준다

제어장치는 주기억장치에 저장된 명령어를 순서대로 가져와 수행하도록 통제합니다. 한 명령어의 기본 흐름은 인출(fetch) → 해독(decode) → 실행(execute) → 저장(write-back)입니다.

  1. 인출: PC가 가리키는 주기억장치 주소에서 명령어를 가져와 IR에 넣습니다.
  2. 해독: 명령어 해독기가 IR의 연산 코드와 주소 정보를 해석하여 필요한 제어 동작을 정합니다.
  3. 실행: 제어신호가 처리장치의 레지스터·ALU·시프터를 구동하여 명령이 요구한 연산을 수행합니다.
  4. 저장: 연산 결과를 목적 레지스터나 기억장치에 기록하고 다음 명령의 주소를 준비합니다.

마이크로 프로그램 제어장치에서는 제어기억장치가 마이크로 연산의 집합을 저장합니다. 명령어 해독기는 주어진 명령어를 해당 마이크로 명령이 시작되는 주소에 연결합니다. 주소 결정회로는 명령어의 주소 정보, 현재 제어단어의 주소 정보와 처리 결과의 상태 비트를 사용해 다음 마이크로 명령 주소를 만듭니다.

CMAR은 제어기억장치에서 다음에 수행할 마이크로 명령의 주소를, CMDR은 제어기억장치에서 가져온 마이크로 연산을 저장합니다. CMDR의 제어단어는 처리장치로 제어선을 보내고, 처리장치의 상태 출력은 다시 주소 결정에 영향을 주어 다음 동작으로 이어집니다.

오류 교정: PC와 IR을 모두 ‘현재 명령어를 저장하는 곳’으로 보면 흐름이 끊깁니다. PC는 다음에 가져올 명령어의 주소를, IR은 이미 가져와 현재 처리 중인 명령어를 보관합니다.

입출력 시스템은 장치 차이를 제어기와 인터페이스에서 흡수한다

키보드, 마우스, 모니터, 프린터와 디스크 같은 입출력장치는 사용자와 컴퓨터 시스템을 연결합니다. 장치마다 기계적·전자적 특성과 속도가 다르므로 CPU가 각 장치의 세부 동작을 직접 모두 처리하기보다 제어기·인터페이스·버스를 사이에 둡니다.

  • 입출력장치 제어기: 모터 회전, 헤드 이동, 매체 위치 정렬처럼 장치의 물리적·전자적 동작을 제어합니다. 제어기가 장치에 포함되거나 하나의 제어기가 여러 장치를 맡을 수 있습니다.
  • 입출력장치 인터페이스: 장치와 CPU·주기억장치 사이의 전송 속도, 데이터 처리 단위와 오류 확률 차이를 조정해 올바른 전송을 돕습니다.
  • 입출력 버스: 입출력장치와 중앙처리장치 사이의 정보 교환에 사용하는 입출력 전용 정보 회선의 묶음입니다. 여러 장치의 충돌을 막기 위한 중재가 필요합니다.

따라서 제어기는 장치를 실제로 움직이고, 인터페이스는 서로 다른 통신 조건을 맞추며, 버스는 정보가 지나가는 공용 통로를 제공합니다. 세 요소를 모두 ‘장치를 연결하는 선’으로 묶으면 각각의 역할을 구분할 수 없습니다.

입출력 제어방식은 CPU가 개입하는 시점과 범위가 다르다

방식CPU의 관여데이터 이동·제어의 핵심구분 질문
CPU에 의한 제어입출력 정보가 CPU를 거쳐 이동독립된 입출력 제어기 없이 CPU를 통해 주기억장치와 교환데이터가 CPU를 통과하는가
프로그램에 의한 방식CPU가 장치를 주기적으로 확인입출력 여부를 반복해서 물어보는 폴링CPU가 계속 상태를 확인하는가
인터럽트에 의한 방식장치 요청이 있을 때 하던 일을 중단하고 응답장치가 인터럽트로 필요한 시점을 알림장치가 CPU를 호출하는가
DMA초기 설정과 허가에 관여DMA 제어기가 입출력장치와 주기억장치 사이의 직접 이동을 담당대량 데이터가 CPU를 거치지 않는가
채널입출력 전용 프로세서에 작업을 맡김정보 전송뿐 아니라 산술·논리·분기 연산도 수행 가능별도 프로세서가 입출력 프로그램을 수행하는가

CPU 관여 정도를 단계적으로 보면 차이가 선명해집니다. 프로그램 방식에서는 CPU가 장치를 반복 확인하므로 기다리는 동안에도 확인 작업을 합니다. 인터럽트 방식은 장치가 필요할 때만 알리므로 CPU가 다른 일을 하다가 요청 시점에 응답합니다. DMA에서는 CPU가 전송의 시작 조건을 설정하고 허가하지만 실제 데이터 이동은 DMA 제어기가 장치와 주기억장치 사이에서 처리합니다.

선택 기준: ‘CPU가 시작만 지시하는가’, ‘장치가 필요할 때 알리는가’, ‘CPU가 계속 물어보는가’, ‘별도 프로세서가 연산까지 맡는가’를 차례로 확인하면 DMA·인터럽트·프로그램·채널 방식을 구분할 수 있습니다.

병렬처리는 단계·코어·연산 장치의 독립성을 활용한다

파이프라인 처리기는 하나의 연산을 서로 다른 기능의 여러 단계로 나누고, 각 단계가 동시에 서로 다른 데이터를 처리하게 하여 시간적 병렬성을 활용합니다. 현재 명령이 한 단계를 마치고 다음 단계로 가면 뒤의 명령이 비어 있는 앞 단계를 시작합니다. 연달아 수행되는 명령 사이에 데이터 간섭이 없어야 이러한 중첩이 원활합니다.

직접 구성한 이상적인 계산으로, 명령어 하나가 4단계를 거치고 각 단계가 한 주기라면 첫 명령은 4주기 뒤에 끝납니다. 세 명령을 파이프라인 없이 처리하면 4 × 3 = 12주기가 필요하지만, 파이프라인이 지연 없이 채워진다고 가정하면 4 + (3 - 1) = 6주기입니다. 첫 결과 뒤에는 매 주기마다 다음 결과가 나오기 때문입니다. 이는 각 단계 시간이 같고 간섭과 지연이 없다는 학습용 가정이며, 실제 성능이 언제나 이 값이 된다는 뜻은 아닙니다.

멀티코어 구조는 하나의 CPU에 둘 이상의 코어를 넣어 여러 명령어를 동시에 처리합니다. 코어는 명령어를 가져와 실행하는 CPU의 일부분이며, 각 코어가 실행 중인 응용 프로그램의 프로세스나 스레드를 하나씩 담당할 수 있습니다. GPGPU는 그래픽 처리장치의 높은 병렬처리 능력을 그래픽 이외의 범용 연산에 활용하는 기술입니다.

방식병렬화하는 단위필요한 독립성핵심 효과
파이프라인한 명령 처리의 서로 다른 단계겹쳐 실행되는 명령 사이의 간섭 최소화단계들이 시간적으로 중첩
멀티코어여러 CPU 코어가 맡는 프로세스·스레드코어별로 나누어 실행할 작업여러 명령 흐름을 동시에 처리
GPGPU그래픽 처리장치의 다수 병렬 연산 자원대량으로 나눌 수 있는 범용 연산GPU의 병렬처리 능력을 연산에 활용

낯선 구조도 데이터와 제어의 이동을 분리하면 읽을 수 있다

  1. 명령어의 경계를 나눕니다. 연산자 코드와 오퍼랜드, 주소 필드 수를 확인합니다.
  2. 실제 데이터까지 따라갑니다. 값 자체인지, 기억장치 주소인지, 레지스터인지, 주소를 담은 주소인지 표시합니다.
  3. 데이터와 제어를 구분합니다. 레지스터·ALU·버스로 움직이는 값과 제어단어·제어선으로 전달되는 선택 신호를 따로 추적합니다.
  4. 사이클의 현재 위치를 찾습니다. PC의 주소로 인출 중인지, IR의 명령을 해독 중인지, 처리장치에서 실행 중인지, 결과를 저장하는지 확인합니다.
  5. CPU 관여 범위를 묻습니다. 입출력 데이터를 CPU가 직접 옮기는지, 반복 확인하는지, 인터럽트에 응답하는지, DMA나 채널에 넘기는지 판정합니다.
  6. 동시 실행의 단위를 찾습니다. 단계의 중첩인지, 여러 코어의 작업 분담인지, GPU 병렬 연산인지 구분하고 작업 사이의 의존성을 점검합니다.

예를 들어 “레지스터 R2의 값이 주소 80이고 실제 데이터는 기억장치 80에 있다”면 레지스터 간접 주소지정입니다. “CPU가 전송을 허가한 뒤 장치와 주기억장치가 직접 데이터를 옮긴다”면 DMA입니다. “한 명령의 실행 단계와 다음 명령의 해독 단계를 겹친다”면 파이프라인입니다. 명칭보다 이동 경로를 먼저 그리면 답을 재현할 수 있습니다.

핵심 개념 정리

  • ISA는 명령어 집합·형식·주소지정방식을 정하여 소프트웨어의 요구와 하드웨어 실행을 연결합니다.
  • 명령어는 연산자 코드와 오퍼랜드로 구성되고, 주소 필드가 줄면 누산기나 스택 같은 암묵적 저장 장소가 역할을 대신합니다.
  • 주소지정방식은 오퍼랜드에서 실제 데이터까지의 경로이며, 직접·간접과 레지스터·레지스터 간접은 데이터와 주소 중 무엇을 담는지로 구분합니다.
  • 처리장치는 레지스터와 ALU로 마이크로 연산을 수행하고, 제어장치는 인출·해독·실행·저장의 순서와 제어신호를 만듭니다.
  • 입출력 제어는 CPU의 관여 시점과 범위에 따라 CPU 직접 제어, 프로그램, 인터럽트, DMA와 채널 방식으로 구분됩니다.
  • 파이프라인은 처리 단계를 중첩하고, 멀티코어는 여러 코어에 작업을 나누며, GPGPU는 GPU의 병렬처리 능력을 범용 연산에 활용합니다.

명령어 실행을 이해하는 가장 안정적인 방법은 이름을 따로 외우는 것이 아니라 두 흐름을 겹쳐 보는 것입니다. 데이터는 오퍼랜드에서 실제 위치를 찾아 레지스터와 ALU, 기억장치와 입출력장치 사이를 이동하고, 제어는 명령어를 인출·해독하여 그 이동을 선택하는 신호를 보냅니다. 여기에 독립적인 단계나 작업이 발견되면 파이프라인·멀티코어·GPGPU로 실행을 중첩할 수 있습니다. 새 구조를 만나면 데이터 경로, 제어 경로, CPU 관여 범위, 병렬화 단위를 순서대로 표시해 보십시오.

예상문제 10선

1. 명령어 집합 구조(ISA)의 역할을 가장 적절하게 설명한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③

  • ① 오답: 장치의 물리 동작은 입출력장치 제어기의 역할이며 ISA의 범위보다 좁습니다.
  • ② 오답: 현재 명령어를 저장하는 것은 IR입니다.
  • ③ 정답: 소프트웨어가 사용할 명령과 하드웨어가 구현할 실행 규칙의 접점을 정확히 나타냅니다.
  • ④ 오답: 코어 작업 배분과 ISA는 서로 다른 계층의 문제입니다.

2. 강의에서 설명한 CISC와 RISC의 차이로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①

  • ① 정답: 명령어의 복잡도와 하드웨어 단순화라는 핵심 대비를 담고 있습니다.
  • ② 오답: 두 구조 모두 명령어 수행을 통제하는 제어장치가 필요합니다.
  • ③ 오답: 주소 수는 명령어 형식의 구분이며 CISC·RISC를 한 형식으로 제한하지 않습니다.
  • ④ 오답: 핵심 차이는 명령어 집합과 제어 구조에 있으며 버스 수만의 문제가 아닙니다.

3. ADD 명령에 주소 필드가 없지만 스택 맨 위의 두 값을 꺼내 더한다. 해당 명령어 형식은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④

  • ① 오답: 3주소 형식은 두 원본과 결과 위치를 명시합니다.
  • ② 오답: 2주소 형식은 두 주소 필드를 쓰고 한 위치에 결과를 덮어씁니다.
  • ③ 오답: 1주소 형식은 주소 하나와 암묵적 누산기를 사용합니다.
  • ④ 정답: 피연산자 위치가 스택 규칙으로 정해져 주소 필드를 쓰지 않습니다.

4. 직접 주소지정과 간접 주소지정을 올바르게 구분한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②

  • ① 오답: 데이터 자체를 넣는 것은 즉시 방식이며 레지스터 번호는 레지스터 방식에 해당합니다.
  • ② 정답: 첫 주소가 데이터 위치인지 다음 주소의 위치인지가 결정적인 차이입니다.
  • ③ 오답: 간접 방식이 실제 데이터 주소를 얻기 위해 한 단계를 더 거칩니다.
  • ④ 오답: 두 방식의 오퍼랜드는 주소이며 실제 값 자체가 아닙니다.

5. 제어단어 필드가 A-B-D-F-H 순서이고 R0 ← R1 + R2의 선택값이 010, 011, 000, 0001, 000이라면 16비트 제어단어는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②

  • ① 오답: D와 F의 경계를 잘못 이어 목적 레지스터와 연산 선택이 바뀝니다.
  • ② 정답: 010|011|000|0001|000을 필드 순서대로 결합한 결과입니다.
  • ③ 오답: A와 B를 뒤바꾸어 첫 번째와 두 번째 입력 선택이 달라집니다.
  • ④ 오답: F와 H의 비트 경계를 옮겨 덧셈과 무시프트 선택을 보존하지 못합니다.

6. “MAR과 MBR은 모두 기억장치 주소를 저장한다”는 설명을 바로잡은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④

  • ① 오답: 현재 명령어와 다음 주소는 각각 IR과 PC의 역할입니다.
  • ② 오답: 연산 결과는 AC 등에서 다루고 제어기억장치 주소는 CMAR에 저장합니다.
  • ③ 오답: 두 레지스터는 CPU와 주기억장치 사이의 접근에 사용됩니다.
  • ④ 정답: 주소 버스에 연결되는 위치 정보와 데이터 버스의 전송 내용을 구분합니다.

7. 명령어 사이클에서 해독(decode) 다음에 수행되는 기본 단계는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①

  • ① 정답: 해독된 제어 동작에 따라 처리장치가 실제 연산을 수행합니다.
  • ② 오답: 인출은 해독보다 먼저 PC의 주소에서 명령어를 가져오는 단계입니다.
  • ③ 오답: 저장은 실행 결과를 기록하므로 실행 뒤에 옵니다.
  • ④ 오답: 현재 명령의 실행과 저장을 마치기 전에 기본 사이클을 건너뛸 수 없습니다.

8. CPU가 전송의 초기 설정과 허가만 하고 입출력장치와 주기억장치 사이의 실제 데이터 이동을 별도 제어기가 맡는다. 해당 방식은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③

  • ① 오답: 프로그램 방식에서는 CPU가 주기적으로 장치의 상태를 확인합니다.
  • ② 오답: 인터럽트 방식은 장치가 요청 시점을 알리는 방식이며 직접 전송 제어가 핵심은 아닙니다.
  • ③ 정답: CPU의 초기 관여 뒤 DMA 제어기가 장치와 주기억장치 사이 전송을 담당합니다.
  • ④ 오답: 직접 제어에서는 입출력 정보가 CPU를 거쳐 이동합니다.

9. 각 단계가 1주기인 4단계 파이프라인에서 서로 간섭 없는 명령어 3개를 이상적으로 처리할 때 필요한 주기는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④

  • ① 오답: 첫 명령만 완료되는 시점이며 뒤의 두 명령 완료 시간이 빠졌습니다.
  • ② 오답: 첫 결과 뒤에 두 결과가 더 필요하므로 한 주기가 부족합니다.
  • ③ 오답: 4 × 3은 단계를 전혀 중첩하지 않았을 때의 시간입니다.
  • ④ 정답: 첫 명령 4주기와 추가 두 명령의 각 1주기를 합해 4 + (3 - 1) = 6입니다.

10. 그래픽 출력이 아닌 대량의 독립적인 범용 연산에 그래픽 처리장치의 병렬 능력을 활용하려 한다. 가장 알맞은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②

  • ① 오답: 이는 레지스터가 가리키는 기억장치 주소에서 데이터를 찾는 방식입니다.
  • ② 정답: GPU의 높은 병렬처리 능력을 그래픽 이외의 범용 계산에 사용하는 목적과 일치합니다.
  • ③ 오답: 이는 제어기억장치의 마이크로 연산으로 명령을 구현하는 방법입니다.
  • ④ 오답: 이는 CPU가 장치를 반복 확인하는 입출력 방식으로 병렬 연산 장치 선택과 다릅니다.

참고 자료와 작성 기준

이 글은 해당 차시 강의자료를 바탕으로 학습 목적에 맞게 재구성한 비공식 학습자료입니다. 명령어 실행 경로, 제어단어의 필드 결합, 주소 추적과 이상적 파이프라인 계산은 학습자가 과정을 재현할 수 있도록 구성하고 검토했습니다.

  • 작성·편집: 올에이클래스 학습연구팀
  • 주요 근거: 한국방송통신대학교 컴퓨터과학개론 10강 「컴퓨터 구조(2)」 강의자료, 2024
  • 편집 원칙: 올에이클래스 편집 정책
  • 최종 내용 검토: 2026-09-06

댓글