<주요 명령의 마이크로 오퍼레이션>
• ADD : AC ← AC + M[AD]
Micro Operation
|
의 미
|
MAR ← MBR[AD]
|
MBR에 있는 명령어의 번지 부분을 MAR에 전송함
|
MBR ← M[MAR]
|
메모리에서 MAR이 지정하는 위치의 값을
MBR에 전송함
|
AC ← AC + MBR
|
누산기의 값과 MBR의 값을 더해 누산기에 전송함
|
• LDA(Load to AC) : AC ← M[AD]
Micro Operation
|
의 미
|
MAR ← MBR[AD]
|
MBR에 있는 명령어의 번지 부분을 MAR에 전송함
|
MBR ← M[MAR]
AC ← 0
|
• 메모리에서 MAR이 지정하는 위치의 값을 MBR에 전송함
• AC에 0을 전송하여 AC를 초기화함
|
AC ← AC + MBR
|
• 메모리에서 가져온 MBR과 AC를 더해
AC에 전송함
※ 초기화된 AC에 더해지므로 메모리의
값을 AC로 불러오는 것이됨
|
• STA(Store to AC) : M[AD] ← AC
Micro Operation
|
의 미
|
MAR ← MBR[AD]
|
MBR에 있는 명령어의 번지 부분을 MAR에 전송함
|
MBR ← AC
|
AC의 값을 MBR에 전송함
|
M(MAR) ← MBR
|
MBR의 값을 메모리의 MAR이 지정하는
위치에 전송함
|
• BSA(Branch and Save Return Address)
Micro Operation
|
의 미
|
MAR ← MBR[AD],
MBR[AD] ← PC,
PC ← MBR[AD]
|
• M B R에 있는 명령어의 번지 부분을
MAR에 전송함
※ MBR[AD]는 복귀주소가 저장될 위치
이면서 부프로그램이 시작되기 바로
전 번지임
• PC의 값(복귀주소)을 MBR의 주소 부분
으로 전송함
※ 복귀주소를 저장하기 위한 준비단계임
• MBR의 주소 부분을 PC로 전송함
※ 부프로그램이 시작되기 바로 전 주소
를 PC에 전송함
|
M[MAR] ← MBR[AD]
|
• MBR에 있는 명령어의 번지 부분을 메
모리의 MAR이 가리키는 위치에 전송함
※ 부프로그램이 시작되기 바로 전 주소
에 복귀주소를 저장함
|
PC ← PC+1
|
• PC의 값을 1 증가시킴
※ 부프로그램의 시작임
|
<인터럽트 발생 시 CPU가 확인할 사항>
• 프로그램 카운터의 내용
• 사용한 모든 레지스터의 내용
• 상태 조건의 내용(PSW)
<마이크로 오퍼레이션(Micro Operation)의 정의>
• Instruction을 수행하기 위해 CPU 내의 레지스터와 플래그가 의미 있는 상태 변환을 하도록 하는 동작이다.
• 컴퓨터의 모든 명령을 구성하고 있는 몇 가지 종류의 기본 동작이다.
• 컴퓨터 프로그램에 의한 명령의 수행은 마이크로 오퍼레이션의 수행으로 이루어진다.
• 레지스터에 저장된 데이터에 의해 이루어지는 동작이다.
• 마이크로 오퍼레이션은 하나의 Clock 펄스 동안 실행되는 기본 동작으로 모든 마이크로 오퍼레이션은 CPU의 Clock 펄스에 맞춰 실행된다.
• 마이크로 오퍼레이션의 순서를 결정하기 위하여 제어장치가 발생하는 신호를 제어신호라고 한다.
• 마이크로 오퍼레이션은 Instruction 실행과정에서 한단계씩 이루어지는 동작으로, 한 개의 Instruction은 여러 개의 Micro Operation이 동작되어 실행된다.
• Micro Cycle Time : 한 개의 Micro Operation을 수행하는 데 걸리는 시간
<명령어 형식>
3 번지 명령어
• Operand부가 3개로 구성되는 명령어 형식으로 여러개의 범용 레지스터(GPR)를 가진 컴퓨터에서 사용함
• 연산의 결과는 주로 Operand 1에 기록됨
• 연산 시 원시 자료를 파괴하지 않음
• 다른 형식의 명령어를 이용하는 것보다 프로그램 전체의 길이를 짧게 할 수 있음
• 전체 프로그램 실행 시 명령 인출을 위하여 주기억장치를 접근하는 횟수가 줄어들어 프로그램 실행 속도를 단축시킴
2 번지 명령어
• Operand부가 두 개로 구성되는, 가장 일반적으로 사용되는 명령어 형식임
• 여러 개의 범용 레지스터를 가진 컴퓨터에서 사용함
• 실행 속도가 빠르고 기억 장소를 많이 차지하지 않음
• 3주소 명령에 비해 명령어의 길이가 짧음
• 계산 결과가 기억장치에 기억되고 중앙처리장치에도 남아 있어서 계산 결과를 시험할 필요가 있을 때 시간이 절약됨
• 단점
- 연산의 결과는 주로 Operand 1에 저장되므로 Operand 1에 있던 원래의 자료가 파괴됨
- 전체 프로그램의 길이가 길어짐
1 번지 명령어
• Operand부가 1개로 구성되어 있음
• AC(Accumulator; 누산기)를 이용하여 명령어를 처리함
0 번지 명령어
• Operand부 없이 OP-Code부만으로 구성
• 모든 연산은 Stack 메모리의 Stack Pointer가 가리키는 Operand를 이용하여 수행함
• 수식을 계산하기 위해서는 우선, 수식을 Postfix(역 Polish) 형태로 변경하여야 함
• 모든 연산은 스택에 있는 자료를 이용하여 수행하기 때문에 스택 머신(Stack Machine)이라고도 함
• 원래의 자료가 남지 않음
<파이프라인 프로세서((Pipeline Processor)>
• 실행순서 : Fetch(명령 인출) - Decode(명령 디코드) - 오퍼랜드패치(Operand Fetch) - 실행(Execute)
<플린(Flynn)의 병렬 컴퓨터 분류>
SISD(Single Instruction stream Single Data stream)
•현재의 보통 컴퓨터 구조임
•명령 하나가 자료 하나를 처리하는 구조임
• 제어장치가 한 개의 명령을 번역한 후 처리기를
작동시켜 명령을 처리할 때 기억장치에서 한 개
의 자료를 꺼내서 처리함
•Pipeline에 의한 시간적 병렬 처리가 가능함
SIMD(Single Instruction stream Multi Data stream)
• 한 개의 명령으로 여러 Data를 동시에 처리하는
구조임
• 다수의 처리기가 한 개의 제어장치에 의해 제어됨
• 배열 처리기(Array Processor)에 의한 동기적 병
렬 처리가 가능함
MISD(Multi Instruction stream Single Data stream)
• 다수의 처리기에 의해 각각의 명령들이 하나의
Data를 처리하는 구조임
• 실제로는 사용되지 않는 구조임
• Pipeline에 의한 비동기적 병렬 처리가 가능함
MIMD(Multi Instruction stream Multi Data stream)
• 다수의 처리기가 각각 다른 명령 흐름과 자료 흐
름을 가지고 여러 개의 자료를 처리하는 구조임
• 처리기들의 상호 연결 시 T i g h t l y C o u p l e d
System을 다중 처리기, Loosely Coupled
System을 분산 처리 시스템이라 함
•다중 처리기에 의한 비동기적 병렬 처리가 가능함
<주요 레지스터>
프로그램 카운터, 프로그램 계수기 (PC; Program Counter)
• 다음 번에 실행할 명령어의 번지를 기억하는 레지스터
• 분기 명령이 실행되는 경우 그 목적지 주소로 갱신된다.
명령 레지스터 (IR; Instruction Register)
• 현재 실행중인 명령의 내용을 기억하는 레지스터
누산기 (AC; Accumulator)
• 연산된 결과를 일시적으로 저장하는 레지스터로 연산의 중심임
상태 레지스터(Status Register) PSWR(Program Status Word Register) 플래그 레지스터
• 시스템 내부의 순간순간의 상태가 기록된 정보를 PSW라고 함
• 오버플로, 언더플로, 자리올림, 계산상태(0, -, +), 인터럽트 등의 PSW를 저장하고 있는 레지스터
메모리 주소 레지스터 (MAR; Memory Address Register)
• 기억장치를 출입하는 데이터의 번지를 기억하는 레지스터
메모리 버퍼 레지스터(MBR; Memory Buffer Register)
• 기억장치를 출입하는 데이터가 잠시 기억되는 레지스터로 CPU가 데이터를 처리하기 위해서는 반드시 거쳐야 함
인덱스 레지스터 (Index Register)
• 주소의 변경, 서브루틴 연결 및 프로그램에서의 반복 연산의 횟수를 세는 레지스터
• 사용자가 내용을 변경할 수 있음
데이터 레지스터 (Data Register)
• 연산에 사용될 데이터를 기억하는
레지스터
시프트 레지스터 (Shift Register)
• 저장된 값을 왼쪽 또는 오른쪽으로 1Bit씩 자리를 이동시키는 레지스터
• 2배 길이 레지스터라고도 함
메이저 스테이터스 레지스터 (Major Status Register)
• CPU의 메이저 상태를 저장하고 있는 레지스터
<반도체 기억소자 구성>
• RAM / ROM의 용량계산법
기억장치 용량 = 2^워드의 수 × 워드의 크기
- 워드의 수 = 입력 번지선의 수 = 주소선의 수 = MAR = PC
- 워드의 크기 = 출력 데이터선의 수 = Data Bus의 비트 수 = MBR = DR = IR
- 예제
• 기억용량이 1MByte일 때 필요한 주소선의 수?
⇨ 워드의 크기에 대한 언급이 없으면 워드의 크기로 1Byte로 보면 됨
1MByte = 2의 20승이므로 20개의 주소선이 필요함
• 입력 번지선이 8개, 출력 데이터선이 8개인 ROM의 기억용량?
⇨ 2^8 × 8 Bit = 256 × 8 Bit = 256 Byte
<플립플롭>
플립플롭
|
특 징
|
RS
|
플립플롭의 기본으로, S와 R선의 입력을 조절하여 임의의 Bit 값을 그대로 유지시키거나, 무조건 0 또는 1의 값을 기억시키기 위해서 사용
|
JK
|
• RS FF에서 S = R = 1일 때 동작되지 않는 결점을 보완한 플립플롭
• RS FF의 입력선 S와 R을 JK FF의 입력선 J와 K로 사용함
•모든 플립플롭의 기능을 포함함
|
D
|
• RS FF의 R선에 인버터(Inverter)를 추가하여 S선과 하나로 묶어서 입력선을 하나만 구성한 플립플롭
•입력하는 값을 그대로 저장하는 기능을 수행함
|
T
|
• JK FF의 두 입력선을 묶어서 한 개의 입력선으로 구성한 플립플롭
• T=0인 경우는 변화가 없고, T=1인 경우에 현재의 상태를 토글(Toggle)시킴. 즉 원 상태와 보수 상태의 2가지 상태로만 서로 전환됨
|
마스터-
슬레이브
(M/S)
|
• 출력 측의 일부가 입력 측에 궤환(FeedBack)되어 유발되는 레이스 현상을 없애기 위해 고안된 플립플롭
• 2개의 플립플롭으로 구성되는 데, 한쪽 회로가 마스터이고 다른 한쪽이 슬레이브의 위치에 있어 마스터-슬레이브 플립플롭이라 함
|
<논리 게이트 (논리 소자)>
Gate name
|
Symbol
|
논리식
|
T.T(진리표)
|
Gate name
|
Symbol
|
논리식
|
T.T(진리표)
|
|||||||||||||||||||||||||||||||
AND
gate
|
X = A.B
(논리곱)
|
|
NAND
gate
|
X = (A.B)'
= A'+B'
|
|
|||||||||||||||||||||||||||||||||
OR
gate
|
X = A+B
|
|
NOR
gate
|
X = (A+B)'
= A' . B'
|
|
|||||||||||||||||||||||||||||||||
NOT
gate
|
X = A
|
|
XOR
gate
|
X = A⊕B
= A'B + AB'
|
|
|||||||||||||||||||||||||||||||||
BUFFER
(순기능)
|
X = A
목적 timing
조정
|
|
XNOR
gate
|
X = A⊕B
= A'B + AB
|
|
<인터럽트의 동작 순서>
➊ 인터럽트 요청 신호 발생
➋ 프로그램 실행을 중단함 : 현재 실행중이던 명령어 (Micro Instruction)는 끝까지 실행함
➌ 현재의 프로그램 상태를 보존함 : 프로그램 상태는 다음에 실행할 명령의 번지로서 PC가 가지고 있음
➍ 인터럽트 처리 루틴을 실행함 : 인터럽트를 요청한 장치를 식별함
➎ 인터럽트 서비스(취급) 루틴을 실행함 : 실질적인 인터럽트를 처리함
<DMA의 구성 요소>
• 인터페이스 회로 : CPU와 입·출력 장치와의 통신 담당
• 주소 레지스터(Address Register) 및 주소 라인 : 기억장치의 위치 지정을 위한 번지 기억 및 전송
• 워드 카운트 레지스터(Word Count Register) : 전송되어야 할 워드의 수 기억
• 제어 레지스터(Control Register) : 전송 방식 결정
• 데이터 레지스터(Data Register) : 전송에 사용할 자료나 주소를 임시로 기억하는 버퍼 역할을 함
<입·출력(Input-Output) 제어 방식>
• Programmed I/O
• Interrupt I/O
• DMA (Direct Memory Access)에 의한 I/O
• Channel에 의한 I/O
<피연산자의 수에 따른 연산자의 분류>
• NOT A처럼 피연산자가 1개만 필요한 연산자를 단항 연산자라 하고, A+B처럼 피연산자가 2개 필요한 연산자를 이항 연산자라 한다.
- 단항 연산자 (Unary Operator)
: NOT, COMPLEMENT, SHIFT, ROTATE, MOVE, CLEAR 등
- 이항 연산자 (Binary Operator)
: 사칙 연산, AND, OR, XOR, XNOR
<가상 기억장치(Virtual Memory)>
• 기억 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용할 수 있도록 하는 운영체제의 메모리 운영기법이다.
• 가상 기억장치의 목적은 주기억장치의 용량 확보이다.
• 가상 기억장치는 하드웨어적으로 실제로 존재하는 것이 아니고 소프트웨어적인 방법으로 보조기억장치를 주기억장치처럼 사용하는 것이다.
• 사용자 프로그램을 여러 개의 작은 블록으로 나누어서 보조기억장치 상에 보관해 놓고 프로그램 실행 시 필요한 부분들만 주기억장치에 적재한다.
• 주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있다.
• 가상 기억장치 기법에서 사용하는 보조기억장치는 디스크 같은 DASD 장치이어야 한다.
• 주소의 사용
- 가상 기억장치 기법에서는 보조기억장치에 저장된 사용자 프로그램을 블록으로 나누어 블록에 대한 주소를 주기억장치와는 별도의 주소로 표현하여 필요 시 해당 블록만을 주기억장치에 적재한다.
- 가상 주소(논리 주소) : 보조기억장치 상의 주소로, 이들 주소의 집합을 주소 공간이라고 한다. 교체 단위는 페이지를 사용한다.
- 실기억 주소(물리적 주소) : 주기억장치 상의 주소로 물리적 주소라고도 하며, 이들 주소의 집합을 메모리 공간 또는 기억 공간이라 한다. 교체 단위는 블록을 사용한다.
• 페이지 부재(Page Fault)
- CPU가 액세스한 가상 페이지가 주기억장치에 없는 경우를 말한다.
- Page Fault가 발생하면 요구된 Page가 주기억장치로 옮겨질 때까지 프로그램 수행이 중단된다.
• 주소 매핑
- 가상기억장치에 보관 중이던 프로그램을 실행하기 위해 주기억장치에 Load했다 하더라도 프로그램을 구성하는 각 기계명령에 포함된 주소는 가상주소로 남아 있기 때문에 CPU에서 주기억장치를 Access하기 위해서는 가상주소를 실주소로 변환해야 한다.
- 주소 매핑에는 사상함수가 사용된다.
댓글 없음:
댓글 쓰기