■ 레지스터 (Register)
레지스터(Register)는 CPU 내부에서 처리할 명령어나 연산의 중간 결과값 등을 일시적으로 기억하는 임시 저장소이다.
- 플립플롭(Flip-Flop)이나 래치(Latch)들을 병렬로 연결하여 구성한다.
- 메모리 중에서 속도가 가장 빠르다
- 레지스터의 크기는 워드를 구성하는 비트 개수만큼의 플립플롭으로 구성되며, 여러 개의 플립플롭은 공통 클록의 입력에 의해 동시에 여러 비트의 자료가 저장된다.
- 레지스터를 구성하는 플립플롭은 저장하는 값을 임의로 설정하기 위해 별도의 입력 단자를 추가할 수 있으며, 저장값을 0으로 하는 것을 설정해제(CLR)라 한다.
▷ 레지스터 간의 자료 전송
- 직렬 전송 : 직렬 시프트 마이크로 오퍼레이션을 뜻하며, 병렬 전송에 비해 전송 속도가 느리다.
- 병렬 전송 : 하나의 클록 펄스 동안에 레지스터 내의 모든 비트, 즉 워드가 동시에 전송되는 전송 방식이다.
- 버스 전송 : 모든 레지스터들이 공통으로 이용하는 경로로, 병렬 전송에 비해 결선의 수를 줄일 수 있다는 장점이 있다.
▷ 레지스터의 종류 및 기능
- 프로그램 카운터, 프로그램 계수기(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가 데이터를 처리하기 위해서는 반드시 거쳐야 함
- 베이스 레지스터(Base Register)
- 명령이 시작되는 시작 번지를 기억하고 있는 레지스터
- 인덱스 레지스터(Index Register)
- 주소의 변경, 서브루틴 연결 및 프로그램에서의 반복 연산의 횟수를 세는 레지스터
- 프로그래머가 내용을 변경할 수 있음
- 데이터 레지스터(Data Register)
- 연산에 상요될 데이터를 기억하는 레지스터
- 시프트 레지스터(Shift Register)
- 저장된 값을 왼쪽 또는 오른쪽으로 1Bit 씩 자리를이동시키는 레지스터
- 2배 길이 레지스터라고도 함
- 메이저 스테이터스 레지스터(Major Status Register)
- CPU의 메이저 상태를 저장하고 있는 레지스터
※ 오버플로 : 연산의 결과값이 기억 워드의 기억 용량을 초과하여 넘쳐나는 상태
※ 언더플로 : 연산의 결과값이 컴퓨터가 표현할 수 있는 값보다 작아 표현이 불가능한 상태
※ 메이저 상태 : CPU의 현재 상태를 말하는 것으로 인출, 간접, 실행, 인터럽트 상태가 있다.
■ 메이저 스테이트 (Major State)
메이저 스테이트는 현재 CPU가 무엇을 하고 있는가를 나타내는 상태로서, CPU가 무엇을 위해 주기억장치에 접근하느냐에 따라 Fetch, Indirect, Execute, Interrupt 이렇게 네 개의 상태가 있다.
- CPU는 메이저 스테이트의 네 가지 단계를 반복적으로 거치면서 동작을 수행한다.
- 메이저 스테이트는 메이저 스테이트 레지스터를 통해서 알 수 있다.
- Major Cycle 또는 Machine Cycle 이라고도 한다.
1. 인출 단계(Fetch Cycle)
- 명령어를 주기억장치에서 중앙처리장치의 명령 레지스터로 가져와 해독하는 단계이다.
- 읽어와 해석된 명령어가 1 Cycle 명령이면 이를 수행한 후 다시 Fetch Cycle로 변천한다.
2. 간접 단계(Indirect Cycle)
- Fetch 단계에서 해석된 명령의 주소부가 간접주소인 경우 수행된다.
- 이 사이클에서는 Fetch 단계에서 해석한 주소를 읽어온 후 그 주소가 간접주소이면 유효주소를 계산하기 위해 다시 Indirect 단계를 수행한다.
3. 실행 단계(Execute Cycle)
- Fetch 단계에서 인출하여 해석한 명령을 실행하는 단계이다.
- 플래그 레지스터의 상태 변화를 검사하여 Interrupt 단계로 변천할 것인지를 판단한다.
- Interrupt 요청 신호를 나타내는 플래그 레지스터의 변화가 없으면 Fetch 단계로 변천한다.
4. 인터럽트 단계(Interrupt Cycle)
- 인터럽트 발생 시 복귀주소(PC)를 저장시키고, 제어 순서를 인터럽트 처리 프로그램의 첫 번째 명령으로 옮기는 단계이다.
- 인터럽트 단계를 마친 후에는 항상 Fetch 단계로 변천한다.
■ 캐시 메모리(Cache Memory)
- 캐시 메모리는 CPU 의 속도와 메모리의 속도 차이를 줄이기 위해 사용하는 고속 Buffer Memory 이다.
- 캐시는 주기억장치와 CPU 사이에 위치한다.
- 캐시 메모리는 메모리의 계층 구조에서 가장 빠른 소자이며, 처리 속도가 거의 CPU 의 속도와 비슷할 정도이다.
- 캐시를 사용하면 주기억장치를 접근(Access)하는 횟수가 줄어들기 때문에 컴퓨터의 처리 속도가 향상된다.
- 캐시 주소표는 검색 시간을 단축시키기 위해 주로 연관 기억장치(CAM; Associative Memory)를 사용한다.
- 캐시의 크기는 보통 수십 KByte ~ 수백 KByte 이다.
■ 주소지정방식(Addressing Mode)
▷ 주소 설계 시 고려 사항
- 표현의 효율성 : 빠르게 접근하고 주소 지정에 적은 비트 수를 사용할 수 있도록 다양한 어드레스 모드를 사용할 수 있어야 한다.
- 사용의 편의성 : 다양하고 융통성 있는 프로그램 작업을 위해 포인터, 프로그램 리로케이션 등의 편의를 제공하여야 한다.
- 주소공간과 기억공간의 독립성 : 프로그램 상에서 사용한 주소를 변경 없이 실제 기억공간 내의 주소로 재배치할 수 있도록 서로 독립적이어야 한다.
▷ 주소지정방식의 종류
- 암시적(묵시적) 주소지정방식(Implied Mode)
- 명령 실행에 필요한 데이터의 위치를 지정하지 않고 누산기나 스택의 데이터를 묵시적으로 지정하여 사용한다.
- 오퍼랜드가 없는 명령이나 PUSH R1처럼 오퍼랜드가 1개인 명령어 형식에 사용된다. - 즉치(즉시)적 주소지정방식(Immediate Mode)
- 즉치적 주소지정방식은 명령어 자체에 오퍼랜드(실제 데이터)를 가지고 있는 방식이다.
- 별도의 기억장소르 액세스하지 않고 CPU에서 곧바로 자료를 이용할 수 있어서 실행 속도가 빠르다는 장점이 있다.
- 명령어의 길이에 영향을 받으므로 표현할 수 있는 데이터 값의 범위가 제한적이다. - 직접 주소지정방식(Direct Mode)
- 직접 주소지정방식은 명령의 주소부(Operand)가 사용할 자료의 번지를 표현하고 있는 방식이다.
- 명령의 Operand 부에 표현된 주소를 이용하여 실제 데이터가 기억된 기억장소에 직접 사상시킬 수 있다.
- 주소 부분에 실제 사용할 데이터의 유효 주소를 적기 때문에 주소 길이에 제약을 받는다.
- 기억 용량이 2^n 개의 Word 인 메모리 시스템에서 주소를 표현하려면 n Bit 의 Operand 부가 필요하다.
- 직접 주소지정방식에서 명령의 Operand 부에 데이터를 가지고 있는 레지스터의 번호를 지정하면 레지스터 모드라고 한다. - 간접 주소 지정방식(Indirect Mode)
- 명령어 내의 Operand 부에 실제 데이터의 주소가 아니고, 실제 데이터의 주소가 저장된 곳의 주소를 표현하므로, 최소한 주기억장치를 두 번 이상 접근하여 데이터가 있는 기억장소에 도달한다.
- 명령어에 나타낼 주소가 명령어 내에서 데이터를 지정하기 위해 할당된 비트(Operand 부의 비트) 수로 나타낼 수 없을 때 사용하는 방식이다.
- 명령의 길이가 짧고 제한되어 있어도 긴 주소에 접근 가능한 방식이다.
- 간접 주소지정방식에서 명령의 Operand 부에 데이터의 주소를 가지고 있는 레지스터의 번호를 지정하면 레지스터 간접 모드라고 한다. - 계산에 의한 주소지정방식
- 계산에 의한 주소지정방식은 Operand 부와 CPU의 특정 레지스터의 값이 더해져서 유효주소를 계산하는 방식이다.
- 사용하는 레지스터의 종류에 따라 상대, 베이스, 인덱스 주소지정방식으로 구분한다.
① 상대주소(Relative Mode)
- 유효주소 : 명령어의 주소 부분 + PC
- 명령어 자신의 기억장소를 기준으로 하여 데이터의 위치를 지정하는 방식
② 베이스 레지스터(Base Register Mode)
- 유효주소 : 명령어의 주소 부분 + Base Register
- 프로그램을 재배치(Relocation)할 때 이용한다.
③ 인덱스 레지스터(Index Register Mode)
- 유효주소 : 명령어의 주소 부분 + Index Register
■ 논리회로
- 조합논리회로
- 반가산기, 전가산기, 병렬가산기, 반감산기, 전감산기, 디코더, 인코더, 멀티플렉서, 디멀티플렉서, 다수결회로, 비교기 등
- 입력과 출력을 가진 논리게이트의 집합으로 기억 기능이 없다.
- 멀티플렉서 : 여러 개의 입력선 중 하나의 입력선만 출력에 전달한다. - 순서논리회로
- 플립플롭, 카운터, 레지스터, RAM, CPU 등
- 입력과 논리회로의 현재 상태에 대해 출력이 결정되는 회로이다.
■ Bandwidth(대역폭, 전송률)
- 대역폭은 메모리로부터 또는 메모리까지 1초 동안 전송되는 최대한의 정보량으로 기억장치의 자료 처리속도를 나타내는 단위이다.
- 메모리 워드의 길이가 작을 수록 대역폭이 좋다.
■ 메모리 인터리빙(Memory Interleaving)
- 인터리빙이란 여러 개의 독립된 모듈로 이루어진 복수 모듈 메모리와 CPU 간의 주소 버스가 한 개로만 구성되어 있으면 같은 시각에 CPU로부터 여러 모듈들로 동시에 주소를 전달할 수 없기 때문에, CPU가 각 모듈로 전송할 주소를 교대로 배치한 후 차례대로 전송하여 여러 모듈을 병행 접근하는 기법이다.
- CPU가 버스를 통해 주소를 전달하는 속도는 빠르지만 메모리 모듈의 처리 속도가 느리기 때문에 병행 접근이 가능하다.
- 메모리 인터리빙 기법을 사용하면 기억장치에 대한 접근 시간을 효율적으로 높일 수 있으므로 캐시 기억장치, 고속 DMA 전송 등에서 많이 사용된다.
■ 파이프라인의 수행 순서
- IF(Instruction Fetch)
: 명령 파이프라인, 명령인출(instruction fetch)과 수행단계(execute phase)를 중첩시켜 하나의 연산을 수행하는 구조를 가진 처리방법이다. - ID(Instruction Decode)
- OF(Operand Fetch)
- EX(Execution)
■ I/O 제어 방식
- Program 에 의한 I/O
- DMA 에 의한 I/O
- Channel 에 의한 I/O
- 스트로브펄스(Strobe Pulse)
- 비동기 데이터 전송에 사용됨 - 핸드셰이킹(Handshaking)
- 비동기 데이터 전송에 사용됨
■ DMA(Direct Memory Access)에 의한 I/O
▷ DMA 는 입 · 출력장치가 직접 주기억장치를 접근(Access)하여 Data Block 을 입 · 출력하는 방식으로, 입 · 출력 전송이 CPU의 레지스터를 경유하지 않고 수행된다.
- CPU는 I/O에 필요한 정보를 DMA 제어기에 알려서 I/O 동작을 개시시킨 후 I/O 동작에 더 이상 간섭하지 않고 다른 프로그램을 할당하여 수행한다.
- DMA 방식은 입 · 출력 자료 전송 시 CPU를 거치지 않기 때문에 CPU의 부담이 없어 보다 빠른 데이터의 전송이 가능하다.
- DMA는 인터럽트 신호를 발생시켜 CPU에게 입 · 출력 종료를 알린다.
- DMA는 블록으로 대용량의 데이터를 전송할 수 있다.
- DMA는 Cycle Steal 방식을 이용하여 데이터를 전송한다.
- CPU와 DMA 제어기는 메모리와 버스를 공유한다.
- CPU와 DMA 제어기로 보내는 자료
- I/O 장치의 주소
- 데이터가 있는 주기억장치의 시작 주소
- DMA를 시작시키는 명령
- 입 · 출력 하고자 하는 자료의 양
- 입력 또는 출력을 결정하는 명령
▷ DMA의 구성 요소
- 인터페이스 회로 : CPU와 입 · 출력 장치와의 통신 담당
- 주소 레지스터 (Address Register) 및 주소 라인 : 기억장치의 위치 지정을 위한 번지기억 및 전송
- 워드 카운트 레지스터 (Word Count Register) : 전송되어야 할 워드의 수 기억
- 제어 레지스터 (Control Register) : 전송 방식 결정
- 데이터 레지스터 (Data Register) : 전송에 사용할 자료나 주소를 임시로 기억하는 버퍼 역할을 함
▷ DMA의 전송 절차
① CPU가 DMA 제어기에게 명령을 내린다.
② DMA 제어기가 CPU에게 버스 사용을 요구한다. (Bus Request)
③ CPU가 DMA 제어기에게 버스 사용을 허락한다. (Bus Grant)
④ DMA 제어기가 주기억장치에서 데이터를 읽어 디스크로 전송한다. (Data Transfer)
⑤ (②~④)번을 반복하다가 데이터 전송이 완료되면 인터럽트(Interupt) 신호를 보낸다.
■ 채널(Channel)에 의한 I/O
- Channel은 I/O를 위한 특별한 명령어를 I/O 프로세서에게 수행토록 하여 CPU 관여 없이 주기억장치와 입 · 출력장치 사이에서 입 · 출력을 제어하는 입 · 출력 전용 프로세서(IOP)이다.
- DMA 제어기의 한계를 극복하기 위하여 고안된 방식이다.
- 채널은 DMA 방법으로 입 · 출력을 수행하므로 DMA 의 확장된 개념으로 볼 수 있다.
▷ 채널의 특징
- 채널 제어기는 채널 명령어로 작성된 채널 프로그램을 해독하고 실행하여 입 · 출력 동작 처리
- 채널은 CPU로부터 입 · 출력을 수행하므로 DMA 의 확장된 개념
- 입 · 출력장치와 주기억장치를 연결하는 중개 역할을 담당하는 부분
- 입 · 출력장치와 주기억장치 사이의 데이터 전송을 담당하는 입 · 출력 전담 장치
- 입 · 출력장치와 CPU 사이에 존재하는 속도의 차이로 인하여 발생하는 단점을 해결하기 위해서 고려된 장치
- CPU의 명령을 받고 입 · 출력 조작을 개시하면 CPU와는 독립적으로 조작하는 장치
▷ 채널과 DMA의 비교
1. DMA 방식과의 유사점
- CPU에 대해 완전히 자율적으로 동작, 즉, CPU는 I/O 동작을 개시시킨 후 I/O 동작에 더 이상 간섭하지 않고 다른 명령을 수행한다.
- 주기억장치를 직접 접근(Direct Access) 하여 I/O 명령을 수행하고 I/O 관련 자료를 기록하거나 판독한다.
2. DMA 방식과의 차이점
- DMA 는 한 개의 Instruction 에 의해 한 개의 Block 만을 입 · 출력한다.
- Channel 은 한 개의 Instruction 에 의해 여러 개의 Block 을 입 · 출력한다.
▷ 채널의 종류
1. 선택 채널 (Selector Channel)
- 고속 입 · 출력장치(자기 디스크, 자기 테이프, 자기 드럼)와 입 · 출력하기 위해 사용한다.
- 특정한 한 개의 장치를 독점하여 입 · 출력한다.
2. 다중 채널 (Multiplexer Channel)
- 저속 입 · 출력장치(카드리더, 프린터)를 제어하는 개념이다.
- 동시에 여러 개의 입 · 출력장치를 제어한다.
- 여러 개의 I/O 장치가 채널의 기능을 공유한다.
- 시분할적으로 데이터를 전송한다.
3. Block Multiplexer
- 고속 입 · 출력장치를 제어하는 채널이다.
- 동시에 여러 개의 입 · 출력장치를 제어한다.
- 하나의 데이터 경로를 공유한다는 점과 고속의 입출력 장치를 취급한다는 점에서 바이트 멀티플렉서 채널과 Selector 채널을 결합한 형태의 채널이다.
▷ 채널 명령어(CCW, Channel Command Word)
- 명령 코드(Operation Code) : 입 · 출력 명령을 지정함
- 데이터 주소(Data Address) : 블록의 시작 주소를 표시함
- 플래그(Flag) : CCW의 링크 주소 등 통신 목적이나 상태 기록을 위한 부분
- 워드 카운터(Word counter) : 전송될 블록의 단어 수를 표시함
※ 버스트 모드 : 하나의 I/O 장치가 데이터 전송을 행하고 있는 동안에는 채널의 기능을 완전히 독점하여 사용하므로 대량의 데이터를 고속으로 전송하는데 적합하다.
※ 고정채널 : 채널 제어기가 특정한 I/O 장치들에 전용인 전송통로를 지닌 형태를 말한다. 구성은 간단하지만 가변 채널에 비해 효율이 낮은 단점을 갖고 있다.
■ 연산자의 기능
함수 연산 기능 : 수치적인 산술 연산과 비수치적인 논리 연산이 있음
- 산술 연산 : ADD, SUB, MUL, DIV, 산술 Shift 등
- 논리 연산 : NOT, AND, OR, XOR, 논리적 Shift, Rotate, Complement, Clear 등
자료 전달 기능 : CPU 와 기억장치 사이에서 정보를 교환하는 기능
- Load : 기억장치에 기억되어 있는 정보를 CPU로 꺼내오는 명령
- Store : CPU에 있는 정보를 기억장치에 기억시키는 명령
- Move : 레지스터 간에 자료를 전달하는 명령
- Push : 스택에 자료를 저장하는 명령
- Pop : 스택에서 자료를 꺼내오는 명령
제어 기능 : 프로그래머가 명령의 실행 순서를 변경시키는 기능
- 무조건 분기 명령 : GOTO, Jump(JMP) 등
- 조건 분기 명령 : IF 조건, SPA, SNA, SZA 등
- Call : 부 프로그램 호출
- Return : 부 프로그램에서 메인 프로그램으로 복귀
입 · 출력 기능 : CPU와 I/O 장치 또는 메모리와 I/O 장치 사이에서 자료를 전달하는 기능
- INPUT : 입 · 출력장치의 자료를 주기억장치로 입력하는 명령
- OUTPUT : 주기억장치의 자료를 입 · 출력장치로 출력하는 명령
■ 주요 연산자의 기능
- AND(Masking Operation)
- AND 연산은 특정 문자 또는 특정 비트를 삭제(Clear)시키는 연산으로, Marsking 연산이라고도 함
- AND 연산은 삭제할 부분의 비트를 0과 AND 시켜서 삭제하는 데, 대응시키는 0인 비트를 Mask Bit라 함 - OR(Selective-Set)
- OR 연산은 특정문자를 삽입하거나 특정 비트에 1을 세트시키는 연산으로, Selective Set 연산이라고도 함
- 삽입하거나 세트시킬 비트에 삽입할 문자 또는 1을 OR 연산시킴 - XOR(Compare, 비교)
- XOR 연산은 2개의 데이터를 비교하거나, 특정 비트를 반전시킬 때 사용함
- 2개의 데이터를 XOR 연산하여 결과에 1 Bit 라도 1이 있으면 서로 다른 데이터임
- 반전시킬 때는 반전시킬 비트와 1 을 XOR 시킴 - NOT(Complement, 보수)
- NOT 연산은 각 비트의 값을 반전시키는 연산으로 보수를 구할 때 사용함 - 논리 Shift
- 논리 Shift 는 왼쪽 또는 오른쪽으로 1 Bit 씩 자리를 이동시키는 연산으로 데이터의 직렬 전송(Serial Transfer)에 사용함
- 삽입되는 자리는 무조건 0임 - Rotate
- Rotate 는 Shift 에서 밀려 나가는 비트의 값을 반대편 값으로 입력하는 연산임
- 문자 위치를 변환할 때 사용함 - 산술 Shift
- 산술 Shift 는 부호(Sign)를 고려하여 자리를 이동시키는 연산으로 2^n 을 곱하거나 나눌 때 사용함
- 왼쪽으로 n Bit Shift 하면 원래 자료에 2^n을 곱한 값과 같음
- 오른쪽으로 n Bit Shift 하면 원래 자료를 2^n으로 나눈 값과 같음
- 홀수를 오른쪽으로 한 번 Shift 하면 0.5의 오차가 발생함
- 산술 Shift 는 정수 표현 방식에서만 가능한 방법으로, 정수의 수치 표현 방법에 따라서 표현이 조금씩 다름
■ 운영체제 운용 기법
- 온라인 시스템(On-Line System) : 다수의 컴퓨터나 단말장치를 통신 회선으로 연결하여 처리하는 방식
- 배치 파일 시스템(Batch File System) : 초기의 컴퓨터 시스템에서 사용된 형태로, 일정량 또는 일정 기간 동안 데이터를 모아서 한꺼번에 처리하는 방식
- 듀얼 시스템(Dual System) : 컴퓨터 2대를 병렬로 설치하고 두 컴퓨터로 동시에 시스템을 운용하다가 한쪽 컴퓨터가 고장날 경우 다른 쪽 컴퓨터로 시스템을 운영하는 방식
- 다중 프로그래밍 시스템(Multi-Programming System) : 하나의 CPU 와 주기억장치를 이용하여 여러 개의 프로그램을 동시에 처리하는 방식
- 다중 처리 시스템(Multi-Processing System) : 여러 개의 CPU 와 하나의 주기억장치를 이용하여 여러 개의 프로그램을 동시에 처리하는 방식
- 실시간 처리 시스템(Real Time Processing System) : 데이터 발생 즉시, 또는 데이터 처리 요구가 있는 즉시 처리하여 결과를 산출하는 방식
- 분산 처리 시스템(Distributed Processing System) : 여러 개의 컴퓨터(프로세서)를 통신 회선으로 연결하여 하나의 작업을 처리하는 방식
■ Micro Cycle Time 부여 방식의 종류별 특징
- 동기 고정식(Synchronous Fixed)
- 모든 마이크로 오퍼레이션의 동작시간이 같다고 가정하여 CPU Clock의 주기를 Micro Cycle Time과 같도록 정의하는 방식이다.
- 모든 마이크로 오퍼레이션 중에서 수행시간이 가장 긴 마이크로 오퍼레이션의 동작시간을 Micro Cycle Time으로 정한다.
- 여러 종류의 마이크로 오퍼레이션의 수행 시 CPU 사이클 타입이 실제적인 오퍼레이션 시간보다 길며, 중앙처리장치의 시간 이용이 비효율적이다.
- 모든 마이크로 오퍼레이션의 동작시간이 비슷할 때 유리한 방식이다. - 동기 가변식(Synchronous Variable)
- 수행시간이 유사한 Micro Operation 끼리 그룹을 만들어, 각 그룹별로 서로 다른 Micro Cycle Time 을 정의하는 방식이다.
- 동기 고정식에 비해 CPU 시간 낭비르 줄일 수 있는 반면, 제어기의 구현은 조금 복잡하다.
- 마이크로 오퍼레이션의 동작시간이 차이가 날 때 유리하다(정수배) - 비동기식(Asynchronous)
- 모든 마이크로 오퍼레이션에 대하여 서로 다른 Micro Cycle Time 을 정의하는 방식이다.
- CPU 의 시간 낭비는 전혀 없으나, 제어기가 매우 복잡해지기 때문에 실제로는 거의 사용되지 않는다.
■ 수치코드
- 수치코드에는 자리 값을 가지고 있는 가중 코드(Weighted Code) 와 자리 값이 없는 비가중 코드(Non-Weighted Code) 로 구분 할 수 있다.
- 10진 자기보수화 코드로는 2421 Code, Excess-3 Code 등이 대표적이다.
- 3 초과 코드는 8421 코드에 10진수 3을 더한 코드로 코드 내에 하나 이상의 1이 반드시 포함되어 있어 0과 무신호를 구분하기 위한 코드이다.
그레이 코드(Gray Code)
- 비가중(Weighted) 코드이다.
- BCD 코드의 인접하는 코드를 X-OR 연산하여 만든 코드이다.
- 입 · 출력장치, A/D 변환기, 주변장치 등에서 숫자를 표현할 때 사용된다.
- 1Bit 만 변화시켜 다음 수치로 증가시키기 때문에 하드웨어적인 오류가 적다.
■ 인터럽트
▷ 외부 인터럽트
- 외부 인터럽트는 다음과 같이 입 · 출력 장치, 타이밍 장치, 전원 등 외부적인 요인에 의해 발생한다.
- 전원 이상 인터럽트(Power Fail Interrupt) : 정전이 되거나 전원 이상이 있는 경우
- 기계 착오 인터럽트(Machine Check Interrupt) : CPU 의 기능적인 오류 동작이 발생한 경우
- 외부 신호 인터럽트(External Interrupt)
- 타이머에 의해 규정된 시간(Time Slice)을 알리는 경우
- 키보드로 인터럽트키를 누른 경우
- 외부장치로부터 인터럽트 요청이 있는 경우
- 입 · 출력 인터럽트(Input-Output Interrupt)
- 입 · 출력 Data 의 오류나 이상 현상이 발생한 경우
- 입 · 출력 장치가 데이터의 전송을 요구하거나 전송이 끝났음을 알릴 경우
▷ 내부 인터럽트
- 내부 인터럽트는 다음과 같이 잘못된 명령이나 데이터를사용할 때 발생하며, 트랩 (Trap)이라고도 부른다.
- 명령어 잘못에 의한 인터럽트 : 프로그램에서 명령어를 잘못 사용한 경우
- 프로그램 검사 인터럽트(Program Check Interrupt) : 0으로 나누거나, Overflow 또는 Underflow 가 발생한 경우
▷ 소프트웨어 인터럽트
- 소프트웨어 인터럽트는 프로그램 처리 중 명령의 요청에 의해 발생하는 것으로, 가장 대표적인 형태는 감시 프로그램을 호출하는 SVC(SuperVisor Call) 인터럽트가 있다.
- SVC(SuperVisor Call) 인터럽트 : 사용자가 SVC 명령을 써서 의도적으로 호출한 경우
■ 인터럽트 작동 순서
1. CPU 에게 인터럽트 요청
2. 현재 수행중인 명령을 완료하고 복귀 주소를 저장
3. 인터럽트 인지신호 발생
4. 벡터 인터럽트 처리
5. 리턴에 의한 복귀
※ PSW(Program Status Word)에 현재의 상태를 보관한다.
※ 중앙처리장치는 인터럽트를 요구한 장치를 확인하기 위하여 입출력장치를 폴링한다.
※ 인터럽트를 요구한 장치를 위한 인터럽트 서비스 프로그램을 실행한다.
'IT License' 카테고리의 다른 글
[운전면허필기] 합격 후기 (0) | 2019.03.10 |
---|---|
정보처리기사 필기대비 공부노트 (1_데이터베이스) (0) | 2018.04.13 |
정보처리기사 필기대비 공부노트 (3_운영체제) (0) | 2018.04.12 |
정보처리기사 필기대비 공부노트 (4_소프트웨어 공학) (3) | 2018.04.10 |
스키마의 정의 (Schema Definition) (0) | 2018.01.03 |
댓글