기본 컴퓨터의 구조와 설계 Lecture #5.

Slides:



Advertisements
Similar presentations
1 Prof. Young Jin Nam, Daegu University 컴퓨터 구조 (Computer Architecture) 명령어 세트 : 특성과 기능 남영진
Advertisements

Family 의 개요 의 외부 Pin 기능과 내부 기능 Memory 구조 Timing 2 장 8051 의 구조.
1 8 장 대형 순차회로 문제의 해법 1) 시프트 레지스터 2) 카운터 3)ASM 도를 이용한 설계 4)One Hot encoding 5) 복잡한 예제.
컴퓨터의 구조 2006년 2학기 컴퓨터의 개념 및 실습.
Understanding of Ubiquitous & Computers Plus
마이크로 컨트롤러 Microcontroller.
Chapter 9. 컴퓨터설계기초 9-1 머리말 9-2 데이터 처리장치 (Datapath)
ISA 심화 및 start.S code 분석 SIOR 15th 최재훈.
AMBA BUS Protocol의 이해 (AMBA 2.0 Specification)
제8장. RISC 및 슈퍼스칼라 프로세서 8.1 RISC의 출현 동기 8.2 RISC의 발전 경위
컴퓨터 하드웨어 Computer Hardware
2장 마이크로프로세서 구성요소 Slide 1 (of 19).
프로그램 제어 분기(branch)와 점프(jump) 명령어 PC의 값의 변경 순차적인 프로그램의 진행순서가
마이크로프로세서 메모리 및 입출력장치 인터페이스
마이크로프로세서(Microprocessor,µP)
Digital Logic Structures
기본 컴퓨터 프로그래밍 Lecture #6.
컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net.
2 Part 전자계산기 구조 1. 논리 회로 2. 자료 표현 및 연산 3. 명령어 및 프로세서 4. 명령 수행 및 제어 5.
4 컴퓨터에서 활용되는 디지털 논리회로 IT CookBook, 컴퓨터 구조와 원리 2.0.
제어기술 소개 목표 : 제어기의 종류, 제어 방식 등을 살펴본다. 주요내용 제어기의 종류 제어방식 : 시퀀스, 피드백, 등.
10장 주변장치 (PIO) Slide 1 (of 28).
컴퓨터구조 – 중간시험 (답안지) 부분점수 (사소한 실수면 -1)
3장 MPU 내부구조 Slide 1 (of 28).
임베디드 하드웨어 Lecture #6.
컴퓨터 구조학 정보보호학과.
컴퓨터 구조론 2001년 10월 22일 발표자 황영선.
To Hear will be forget To see will get memory again To do will be know.
연습문제풀이/도움말.
제4장 제어 유니트 4.1 제어 유니트의 기능 4.2 제어 유니트의 구조 4.3 마이크로 명령어의 형식
제11강 중앙처리장치 2.
7장 마이크로프로세서의 명령어수행과 주소지정 방식 Slide 1 (of 29).
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
컴퓨터 구조.
Chapter 02 시스템 구조(System Structure)
1 컴퓨터 시스템 소개.
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
직업 형태 변화 과정 일자리의 변화 ERP (Enterprise Resource Planning) 구분 18~19 세기
PLC를 이용한 제어로직에 관한 연구 김 재 은.
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
1 마이크로프로세서의 원리 마이크로컨트롤러 AVR ATmega128.
Chapter 08 제어장치와 마이크로 오퍼레이션.
4장 컴퓨터의 중앙 처리 장치 하 효 순.

6 중앙처리장치의 조직과 기능 IT CookBook, 컴퓨터 구조와 원리 2.0.
Chapter 06 명령어와 번지지정 방식.
3주 컴퓨터구조.
8086 프로세서의 구조 및 동작 방식 시스템 프로그래밍 - Lecture #2 신라대학교 컴퓨터공학과 시스템 프로그래밍.
제 2장 컴퓨터동작의 기본 개념.
10장. 중앙처리 장치의 명령어 다루는 내용 어셈블리 프로그램의 이해 인터럽트(interrupt) 명령어 세트 주소 지정 방식.
Computer System Architecture
Programmable Logic Device
Chapter 4 The Von Neumann Model.
컴퓨터 시스템 개관 시스템 프로그래밍 - Lecture #1 신라대학교 컴퓨터공학과 시스템 프로그래밍.
6장 연산 장치 6.1 개요 6.2 연산장치의 구성요소 6.3 처리기 6.4 기타 연산장치.
Computer System Architecture
6-1 중앙 처리 장치의 내부 구조 6-2 명령(instruction) 6-3 주소 지정 방식
Computer System Overview
1. 컴퓨터 시스템 구성요소 메모리(Memory) 캐시메모리 개념 캐시메모리의 특징 적중률(hit ratio)
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Chapter 12 Memory Organization
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
DEGITAL LOGIC CIRCUIT Term Project – 4 bit ALU.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
임베디드 하드웨어 Lecture #6.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Lecture 7 7-Segment LED controller using u-controller
4-1. 명령어 형식.
Presentation transcript:

기본 컴퓨터의 구조와 설계 Lecture #5

강의 목차 Instruction Codes Computer Registers Computer Instructions Timing and Control Instruction Cycle Memory Reference Instructions Input-Output and Interrupt Complete Computer Description Design of Basic Computer Design of Accumulator Logic

강의 개요 각각의 프로세서들은 서로 다른 구성요소와 내부 구조를 가진다(different registers, buses, microoperations, machine instructions, etc). 현재의 프로세서는 매우 복잡한 장치임. UVLSI(Ultra-Very Large Scale Integrated) 장치 내부적으로 다음과 같은 구성 요소를 포함: 많은 레지스터 고정소수점 및 부동소숫점 연산을 위해 여러 개의 산술 장치 실행 속도를 위한 파이프라인 실행 구조 등 일반적인 프로세서의 동작을 이해하기 위해서는 보다 간단한 프로세서 모델을 활용  기본 컴퓨터(Basic Computer) 25년 전 실제 프로세서와 유사 M. Morris Mano가 제시 프로세서 구조 및 제어 구조, 프로세서의 RTL 모델 등을 설명

기본 컴퓨터 기본적으로 두 개의 구성 요소, 프로세서와 메모리로 구성됨 메모리는 4096 워드를 가짐 12-비트 주소선 사용(4096 = 212) so it takes 12 bits to select a word in memory 메모리의 각 워드는 16-비트 길이를 가짐. CPU RAM 4095 15

명령어 코드 (1) 컴퓨터 프로그램(Computer Program) 기계 명령어들의 순서열(sequence) 기계 명령어(Machine Instruction or Instruction) 컴퓨터가 하나의 특정 연산(operation)을 수행하도록 지시하는 비트들의 집합(비트열) 지시된 특정 연산은 일련의 연속된 마이크로 연산들로 수행됨 명령어 실행 (in “stored program” concept) 프로그램의 명령어와 필요한 데이터는 처리되기 전에 메모리에 저장된다. CPU는 메모리로부터 다음에 실행할 명령어를 읽어 들여 Instruction Register(IR)에 저장한다. CPU 내의 제어장치는 IR 레지스터에 저장된 명령어를 해석하여 실행을 위한 마이크로 연산의 시퀀스로 변환하고 AUL에 의해 실행되도록 제어한다.

명령어 코드 (2) 명령어 형식(Instruction Format) 명령어는 크게 두 부분으로 이루어짐 연산 코드(opcode:Operation Code) 명령어에 의해 수행되는 연산(operation)을 지정 산술연산, 논리연산, 시프트 연산 등을 명시 Macro Operation – 일련의 마이크로 연산들의 집합으로 수행됨. 주소(address) 연산에 사용될 데이터(피연산자, operand)를 저장하고 있는 메모리 위치 또는 레지스터를 지정 프로세서마다 지원되는 주소 형식이 각기 다르며, 명령어에 ‘주소 모드’ 비트를 두어 주소 형식을 식별

명령어 코드 (3) 기본 컴퓨터의 저장 프로그램 구조 기본 컴퓨터는 단 한 개의 프로세서 레지스터를 가지며, 모든 연산은 이 레지스터에 대해 수행되는 구조를 가짐.  명령어에서 하나의 피연산자(operand)만 지정 누산기(AC:Acummulator) 레지스터 ALU는 AC 레지스터와 명령어 주소에서 지정된 메모리 장소에 저장된 데이터를 가져와 연산을 수행하고 연산 결과를 다시 AC 레지스터에 저장한다

명령어 코드 (4) 기본 컴퓨터의 명령어 형식 메모리 워드의 길이가 16비트이므로 명령어의 길이도 16비트 메모리가 4096(= 212) 워드를 지원하므로 12비트의 메모리 주소가 필요 명령어의 bit 15은 주소 모드(addressing mode)를 지정 0: direct addressing, 1: indirect addressing 명령어의 연산 코드(opcode)는 3비트 Opcode Address Instruction Format 15 14 12 I 11 Addressing mode

명령어 코드 (5) 주소 모드(Addressing Mode) + 명령어의 주소 필드가 의미하는 내용을 지정 직접 주소(Direct address) – 피연산자의 내용이 담겨있는 메모리 주소를 나타냄 간접 주소(Indirect address) – 피연산자의 내용이 있는 메모리 주소를 저장하는 장소의 주소를 나타냄 ADD 457 22 Operand 1 300 35 1350 + AC Direct addressing Indirect addressing 유효 주소(Effective Address) 명령어에 의해 지정된 연산을 수행할 때에 변경없이 직접적으로 사용되는 주소 예로, 457와 1350 이 유효 주소임.

컴퓨터 레지스터 (1) 프로세서는 실행할 명령어, 주소 그리고 데이터 등을 저장하기 위해 많은 레지스터를 가진다 프로세서 레지스터는 사용 목적에 따라 세 부류로 나눌 수 있다. 제어 레지스터(Control Register) – 명령어 실행을 제어하기 위해 사용 범용 레지스터(General Purpose Register) – 연산 실행에 필요한 데이터나 연산 결과를 저장하기 위해 사용 입출력 레지스터(I/O Register) – 주변 장치와의 입출력할 데이터를 저장하는데 사용 제어 레지스터 Program Counter (PC) 프로세서가 다음에 실행할 명령어가 있는 메모리 주소를 저장 프로그램의 실행 순서를 제어 기본 컴퓨터에서는 12 비트 크기를 가짐. Instruction Register(IR) 프로세서가 실행하기 위해 메모리로부터 읽어온 명령어를 저장 제어장치는 IR에 저장된 명령어를 해석하여 제호 신호를 생성

컴퓨터 레지스터 (2) 제어 레지스터 (계속) 범용 레지스터 Memory Address Register(MAR or AR) 프로세서에서 메모리를 접근할 때에 접근하려는 메모리 장소의 주소를 저장 버스에 연결되어 메모리 장치로 주소 신호가 전송됨. Memory Data Register(MDR or DR) 메모리에 전송할 데이터 또는 메모리에서 읽어온 데이터를 저장 저장된 내용이 ALU에 의해 연산에 사용될 수 있다 범용 레지스터 Accumulator(AC) 연산 수행에 사용될 데이터나 연산 결과를 저장 모든 명령어에서 함축적으로 참조함 예: load AC with the contents of a specific memory location; store the contents of AC into a specified memory location Temporary Register(TR) 연산 도중의 임시 데이터를 저장

컴퓨터 레지스터 (3) 입출력 레지스터 기본 컴퓨터는 매우 단순한 I/O 연산 모델을 사용 입력 장치는 8-bit 문자 데이터를 프로세서에 전송할 수 있다. 프로세서는 8-bit 문자 데이터를 출력 장치에 전송할 수 있다. Input Register (INPR) 입력 장치로부터 전송된 8-bit 문자 데이터를 저장 Output Register (OUTR) 출력 장치로 전송할 8-bit 문자 데이터를 저장

컴퓨터 레지스터 (4) Registers in the Basic Computer List of BC Registers PC 11 PC Memory 11 4096 x 16 AR 15 IR CPU 15 15 TR DR 7 7 15 OUTR INPR AC List of BC Registers DR 16 Data Register Holds memory operand AR 12 Address Register Holds address for memory AC 16 Accumulator Processor register IR 16 Instruction Register Holds instruction code PC 12 Program Counter Holds address of instruction TR 16 Temporary Register Holds temporary data INPR 8 Input Register Holds input character OUTR 8 Output Register Holds output character

공통 버스 시스템 (1) 프로세서의 레지스터들과 메모리는 상호간의 데이터 교환을 위해 버스를 통해 연결된다. 버스 시스템은 레지스터와 메모리 사이의 완전한 연결을 위해 단순화된 회로를 제공한다  경제적으로 비용 절감

공통 버스 시스템 (2) AR PC DR AC INPR IR TR OUTR S2 S1 Bus S0 Memory unit 7 4096 x 16 Address Write Read AR 1 LD INR CLR PC 2 LD INR CLR DR 3 LD INR CLR E ALU AC 4 LD INR CLR INPR IR 5 LD TR 6 LD INR CLR OUTR Clock LD 16-bit common bus

공통 버스 시스템 (3) 16-bit Common Bus AR PC DR AC ALU E IR TR OUTR INPR L I LD INPR Memory 4096 x 16 Address Read Write 16-bit Common Bus 7 1 2 3 4 5 6 S0 S1 S2

공통 버스 시스템 (4) 모든 레지스터 출력과 메모리의 데이터 출력이 공통 버스에 직접 연결 3개의 제어 신호 S2, S1, S0은 버스가 입력으로 선택할 레지스터를 제어 모든 레지스터 입력과 메모리의 데이터 입력이 공통 버스에 직접 연결 레지스터의 load(LD) 신호와 메모리의 write 신호를 활성화하여 버스의 데이터를 읽어드리도록 제어 12-bit 레지스터 AR & PC는 버스로 출력될 때에 버스의 최상위 4비트는 0으로 전송된다. 8-bit 레지스터 OUTR는 버스로부터 데이터를 입력될 때에 버스의 하위 8비트 데이터가 입력된다. S2 S1 S0 Register 0 0 0 x 0 0 1 AR 0 1 0 PC 0 1 1 DR 1 0 0 AC 1 0 1 IR 1 1 0 TR 1 1 1 Memory

공통 버스 시스템 (5) 메모리 주소는 AR 레지스터에 직접 연결 ALU의 입력 및 출력 메모리 접근 주소를 위한 별도의 레지스터를 사용함으로써 별도의 버스를 사용할 필요가 없게 함. ALU의 입력 및 출력 ALU 입력 AC 레지스터 출력 DR 레지스터 출력 INPR 레지스터 출력 ALU 출력 – AC 레지스터 입력으로 연결 기본 컴퓨터에서는 레지스터 내용이 버스에 출력되는 것과 동일한 클럭에 산술 논리 회로의 연산이 수행되고, 이 클력을 마지막 부분에서 버스의 데이터가 목적 레지스터로 전송되거나, 가산 논리 회로의 출력이 AC 레지스터에 전송된다. 예: DR ← AR, AR ← DR

기본 컴퓨터 명령어 (1) 기본 컴퓨터는 세가지 명령어 코드 형식을 지원 3-bit 연산 코드와 주소 모드 bit에 의해 명령어 코드 형식 식별 Memory-Reference Instructions (OP-code = 000 ~ 110) 15 14 12 11 I Opcode Address Register-Reference Instructions (OP-code = 111, I = 0) 15 12 11 Register operation 0 1 1 1 Input-Output Instructions (OP-code =111, I = 1) 15 12 11 I/O operation 1 1 1 1

기본 컴퓨터 명령어 (2) 기본 컴퓨터 명령어 : 25개 명령어 Hex Code Symbol I = 0 I = 1 Description AND 0xxx 8xxx AND memory word to AC ADD 1xxx 9xxx Add memory word to AC LDA 2xxx Axxx Load AC from memory STA 3xxx Bxxx Store content of AC into memory BUN 4xxx Cxxx Branch unconditionally BSA 5xxx Dxxx Branch and save return address ISZ 6xxx Exxx Increment and skip if zero CLA 7800 Clear AC CLE 7400 Clear E CMA 7200 Complement AC CME 7100 Complement E CIR 7080 Circulate right AC and E CIL 7040 Circulate left AC and E INC 7020 Increment AC SPA 7010 Skip next instr. if AC is positive SNA 7008 Skip next instr. if AC is negative SZA 7004 Skip next instr. if AC is zero SZE 7002 Skip next instr. if E is zero HLT 7001 Halt computer INP F800 Input character to AC OUT F400 Output character from AC SKI F200 Skip on input flag SKO F100 Skip on output flag ION F080 Interrupt on IOF F040 Interrupt off

기본 컴퓨터 명령어 (3) 명령어 집합의 완전성(Instruction Set Completeness) 하나의 컴퓨터(프로세서)는 사용자가 생각할 수 있는 모든 데이터 처리 작업을 수행할 수 있도록 충분한 명령어 지원하여야 한다. 완전 명령어 집합에서의 명령어 종류(Instruction Types) 연산 명령어(Functional Instructions) Arithmetic, logic, and shift instructions ADD, CMA, INC, CIR, CIL, AND, CLA 전송 명령어(Transfer Instructions) Data transfers between the main memory and the processor registers LDA, STA 제어 명령어(Control Instructions) Program sequencing and control BUN, BSA, ISZ 입출력 명령어(Input/Output Instructions) Input and output INP, OUT

타이밍과 제어 (1) 프로세서의 제어장치(CU)는 명령어을 해석하여 명령어 실행에서 요구되는 마이크로 연산을 위한 제어 신호를 생성한다. 제어장치는 다음의 두 가지 형태로 구현 가능 하드와이어 제어 방식(Hardwired Control) 제어장치가 제어신호를 생성하는 조합 회로와 순차회로로 구성된다. 실행 속도면에서 유리하나 변경이 어려운 단점이 있음 마이크로 프로그램 제어 방식(Microprogrammed Control) 프로세서의 제어 메모리에 필요한 제어 신호를 활성화시키는 마이크로 프로그램을 저장하고 마이크로 프로그램을 수행하여 제어하는 방식 마이크로 프로그램 갱신을 통해 변경이 가능 기본 컴퓨터는 하드와이어 방식의 제어 장치를 갖는다. 두 개의 디코더, 하나의 순차 카운터 그리고 여러 개의 제어 논리 게이트로 구성

타이밍과 제어 (2) 기본 컴퓨터의 제어 장치 Instruction register (IR) 15 14 13 12 11 - 0 14 13 12 11 - 0 3 x 8 decoder 7 6 5 4 3 2 1 0 I D 15 14 . . . . 2 1 0 4 x 16 4-bit sequence counter (SC) Increment (INR) Clear (CLR) Clock Other inputs Control signals T 7 Combinational logic

타이밍과 제어 (3) 타이밍 신호 4-bit 순차 카운터와 416 디코더에 의해 T0 ~T15 생성 순차 카운터(SC)는 1-증가 또는 클리어 가능 Example: T0, T1, T2, T3, T4, T0, T1, . . . 가정: At time T4, SC is cleared to 0 if decoder output D3 is active.  D3T4: SC  0

타이밍과 제어 (4) 타이밍 신호 (계속) 메모리 읽기 및 쓰기 동작의 타이밍 신호 실제 메모리 접근 사이클은 프로세서의 클럭 사이클보다 더 길기 때문에 프로세서는 메모리 워드가 유효해질 때까지 몇 사이클을 기리고 있어야 한다. 프로세서의 동작을 이해하려면 클럭 변이와 타이밍 신호의 시간 관계를 잘 알아야 함 예: T0: PC ← AR  타이밍 신호 T0가 1일 때에 PC의 값을 AR로 전송  T0=1인 한 클럭 동안 S2S1S0=010으로 제어하여 PC 내용이 버스로 전송되고, AR의 LD(로드) 신호를 활성화하면, 다음 클럭의 상승 변이가 일어날 때에 AR에 버스의 내용이 로딩된다.

명령어 사이클 (1) 기본 컴퓨터에서는 명령어는 다음 사이클로 실행된다: 명령어를 메모리에서 가져온다(Instruction Fetching) 명령어를 디코딩한다(Instruction Decoding) 건접 주소 방식의 명령어일 경우에 메모리로부터 유효 주소를 읽어온다(Effective Address Reading) 명령어를 실행한다(Instruction Execution) 하나의 명령어 실행이 끝나면 다시 첫 번째 단계로 돌아가 다음 명령어를 실행하며, 이러한 동작은 ‘HALT’ 명령어를 만날 때까지 반복한다 주의 : 프로세서는 각각 서로 다른 고유의 명령어 사이클을 갖는다

명령어 사이클 (2) Instruction Fetching : T0, T1 T0 = 1  T0: AR ← PC Place the content of PC onto the bus by making the bus selection inputs S2S1S0=010 Transfer the content of the bus to AR by enabling the LD input of AR T1 = 1  T1: IR ← M[AR], PC ← PC + 1 Enable the read input memory Place the content of memory onto the bus by making S2S1S0= 111 Transfer the content of the bus to IR by enable the LD input of IR Increment PC by enabling the INR input of PC T0: AR PC (S0S1S2=010, T0=1) T1: IR  M [AR], PC  PC + 1 (S0S1S2=111, T1=1) 컴퓨터시스템구조

명령어 사이클 (3) Instruction Fetching (계속) 컴퓨터시스템구조

명령어 사이클 (4) Instruction Decoding : T2 T2 = 1  T2: D0, . . . , D7 ← Decode IR(12-14), AR ← IR(0-11), I ←IR(15) IR으 연산 코드 부분이 디코딩되어 디코딩 신호가 생성되고, 주소 모드 비트가 I에 전송되며, 주소 부분이 AR로 전송된다. T2: D0, . . . , D7  Decode IR(12-14), AR  IR(0-11), I  IR(15) 컴퓨터시스템구조

Read effective address 명령어 사이클 (5) Instruction Execution : T3 ,T4 ,T5 ,T6 타이밍 신호 T3가 활성화되면 명령어 종류를 결정: D7=1 Register Op.(I=0) D7I’T3: 레지스터 참조 명령어 실행 I/O Op. (I=1) D7IT3: 입출력 명령어 실행 D7=0 Memory Ref. Op. Indirect(I=1) D7’IT3: AR ← M[AR] Direct(I=0) D7’I’T3: nothing in T3 레지스터 참조 명령어 및 입출력 명령어는 T3에 실행 메모리 참조 명령어는 T3에 유효주소를 가지고 오며, 명령어에 따라 T4~T6에 실행 IR[12- 14] =111 Read effective address 컴퓨터시스템구조

명령어 사이클 (6) 명령어 사이클 흐름도(초기 구성) D'7IT3: AR ← M[AR] D'7I'T3: Nothing = 0 (direct) Start SC  0 AR  PC T0 IR M[AR], PC + 1 T1 IR(0-11), I IR(15) Decode Opcode in IR(12-14), T2 D7 = 0 (Memory-reference) (Register or I/O) = 1 Execute register-reference instruction SC input-output M[AR] Nothing = 0 (register) (I/O) = 1 (indirect) = 1 T3 memory-reference T4 D'7IT3: AR ← M[AR] D'7I'T3: Nothing D7I'T3: Execute a register-reference instr. D7IT3: Execute an input-output instr. 컴퓨터시스템구조

명령어 사이클 (7) 레지스터 참조 명령어 실행 레지스터 참조 명령어는 D7 = 1, I = 0로 구별됨 명령어 종류는 IR 레지스터의 b0 ~ b11에 의해 결정 타이밍 신호 T3에서 실행 r = D7 IT3 => Register Reference Instruction Bi = IR(i) , i=0,1,2,...,11 r: SC  0 CLA rB11: AC  0 CLE rB10: E  0 CMA rB9: AC  AC’ CME rB8: E  E’ CIR rB7: AC  shr AC, AC(15)  E, E  AC(0) CIL rB6: AC  shl AC, AC(0)  E, E  AC(15) INC rB5: AC  AC + 1 SPA rB4: if (AC(15) = 0) then (PC  PC+1) SNA rB3: if (AC(15) = 1) then (PC  PC+1) SZA rB2: if (AC = 0) then (PC  PC+1) SZE rB1: if (E = 0) then (PC  PC+1) HLT rB0: S  0 (S is a start-stop flip-flop) 컴퓨터시스템구조

명령어 사이클 (8) 메모리 참조 명령어 실행 메모리 참조 명령어 종류 메모리 참조 명령어는 Di(i=0~6)에 의해 구별됨 피연산자에 대한 유효 주소는 T2(I=0일 때) 또는 T3(I=1일 때) 시간에 AR로 전송 타이밍 신호 T4에서부터 실행 시작 메모리 참조 명령어 종류 Operation Decoder Symbol Symbolic Description AND D0 AC  AC  M[AR] ADD D1 AC  AC + M[AR], E  Cout LDA D2 AC  M[AR] STA D3 M[AR]  AC BUN D4 PC  AR BSA D5 M[AR]  PC, PC  AR + 1 ISZ D6 M[AR]  M[AR] + 1, if M[AR] + 1 = 0 then PC  PC+1 컴퓨터시스템구조

명령어 사이클 (9) 메모리 참조 명령어별 실행 타이밍 AND to AC D0T4: DR  M[AR] Read operand D0T5: AC  AC  DR, SC  0 AND with AC ADD to AC D1T4: DR  M[AR] Read operand D1T5: AC  AC + DR, E  Cout, SC  0 Add to AC and store carry in E LDA: Load to AC D2T4: DR  M[AR] D2T5: AC  DR, SC  0 STA: Store AC D3T4: M[AR]  AC, SC  0 BUN: Branch Unconditionally D4T4: PC  AR, SC  0 BSA: Branch and Save Return Address M[AR]  PC, PC  AR + 1 Memory, PC after execution 21 BSA 135 Next instruction Subroutine 20 PC = 21 AR = 135 136 1 BUN Memory, PC, AR at time T4 PC = 136 Memory 컴퓨터시스템구조

명령어 사이클 (10) 메모리 참조 명령어별 실행 타이밍 (계속) BSA: D5T4: M[AR]  PC, AR  AR + 1 D5T5: PC  AR, SC  0 ISZ: Increment and Skip-if-Zero D6T4: DR  M[AR] D6T5: DR  DR + 1 D6T4: M[AR]  DR, if (DR = 0) then (PC  PC + 1), SC  0 컴퓨터시스템구조

명령어 사이클 (11) 메모리 참조 명령어의 제어 흐름도 Memory-reference instruction  DR  M[AR] M[AR]  AC SC  0 AND ADD LDA STA AC  AC DR AC  AC + DR E  Cout AC  DR D T 4 1 2 3 5 PC  AR M[AR]  PC AR  AR + 1 BUN BSA ISZ 6 DR  DR + 1 M[AR]  DR If (DR = 0) then (PC  PC + 1)  메모리 참조 명령어의 제어 흐름도 컴퓨터시스템구조

명령어 사이클 (12) 입출력 명령어 및 인터럽트 키보드와 프린터를 가진 단말장치를 입출력 장치로 가정 단말장치는 직렬 전송방식으로 정보를 송수신한다 키보드에서 입력된 정보는 직렬 전송방식으로 INPR 레지스터로 시프트된다. OUTR 레지스터의 출력 정보는 프린터로 직렬 전송방식으로 시프트된다. INPR & OUTR은 단말장치와는 직렬로, AC 레지스터와는 병렬로 데이터를 전송 입출력 장치와 컴퓨터 사이의 타이밍 차이를 동기화하기 위해 플래그가 필요 컴퓨터시스템구조

명령어 사이클 (13) 입출력 명령어 및 인터럽트 입출력 구성 INPR Input register - 8 bits Input-output terminal Serial communication interface Computer registers and flip-flops Printer Keyboard Receiver Transmitter FGO OUTR AC INPR FGI Serial Communications Path Parallel Communications Path INPR Input register - 8 bits OUTR Output register - 8 bits FGI Input flag - 1 bit FGO Output flag - 1 bit IEN Interrupt enable - 1 bit 컴퓨터시스템구조

명령어 사이클 (14) -- CPU -- -- I/O Device -- /* Input */ /* Initially FGI = 0 */ loop: If FGI = 0 goto loop AC  INPR, FGI  0 /* Output */ /* Initially FGO = 1 */ loop: If FGO = 0 goto loop OUTR  AC, FGO  0 loop: If FGI = 1 goto loop INPR  new data, FGI  1 loop: If FGO = 1 goto loop consume OUTR, FGO  1 FGO=1 FGI=0 Start Output Start Input FGI  0 AC  Data yes yes FGO=0 FGI=0 no no OUTR  AC AC  INPR FGO  0 yes More Character yes More Character no no END END 컴퓨터시스템구조

명령어 사이클 (15) 입출력 명령어 및 인터럽트 입출력 명령어 D7IT3 = p IR(i) = Bi, i = 6, …, 11 AC 레지스터로 정보를 전송하고, 플래그 비트를 검사하며, 인터럽트를 제어하는 기능을 수행 D7IT3 = p IR(i) = Bi, i = 6, …, 11 p: SC  0 Clear SC INP pB11: AC(0-7)  INPR, FGI  0 Input char. to AC OUT pB10: OUTR  AC(0-7), FGO  0 Output char. from AC SKI pB9: if(FGI = 1) then (PC  PC + 1) Skip on input flag SKO pB8: if(FGO = 1) then (PC  PC + 1) Skip on output flag ION pB7: IEN  1 Interrupt enable on IOF pB6: IEN  0 Interrupt enable off 컴퓨터시스템구조

명령어 사이클 (16) 입출력 명령어 및 인터럽트 입출력 전송 방식: 프로그램 제어 입출력(Program-controlled I/O) 인터럽트 기반 입출력(Interrupt-initiated I/O) DMA(Direct Memory Access) 기반 입출력 IOP(I/O Processor) 입출력 컴퓨터시스템구조

명령어 사이클 (17) 입출력 명령어 및 인터럽트 Input : LOOP: SKI DEV Output: 프로그램 제어 입출력(Programmed Controlled I/O) 입출력하는 동안 계속적인 CPU 개입으로 유용한 CPU 시간을 낭비 늦은 I/O 속도로 인해 프로그램 실행 속도가 느려짐 단순한 I/O 구조  최소의 하드웨어 구성이 필요 프로세서와 입출력 장치와의 속도 차이로 매우 비능률적 기본 컴퓨터에서 입출력 프로그램: Input : LOOP: SKI DEV BUN LOOP INP DEV Output: LDA DATA LOOP: SKO DEV OUT DEV 컴퓨터시스템구조

명령어 사이클 (18) 입출력 명령어 및 인터럽트 IEN (Interrupt-enable) Flip-Flop 인터럽트 기반 입출력(Interrupt Initiated I/O) 외부 장치가 전송 준비가 되었을 때에 프로세서에게 입출력 준비 여부를 알려 입출력 동작을 시작  인터럽트(interrupt) I/O 인터페이스 장치가 I/O 장치를 모니터링 I/O 장치가 데이터 전송를 전송할 준비가 되면 CPU에서 인터럽트를 전송 CPU는 인터럽트가 검출되며, 현재 수행중인 프로그램 실행을 중지하고, 데이터 전송을 수행할 서비스 루틴으로 실행 제어를 넘기고 데이터 전송이 끝나면 원래 프로그램 실행으로 복귀 IEN (Interrupt-enable) Flip-Flop 입출력 명령어를 이용하여 설정 또는 클리어시킬 수 있다 클리어되어 있으면 CPU에 인터럽트를 걸 수 없다 컴퓨터시스템구조

명령어 사이클 (19) 입출력 명령어 및 인터럽트 인터럽트 사이클(Interrupt Cycle) R = Interrupt f/f Store return address R =1 =0 in location 0 M[0]  PC Branch to location 1 PC  1 IEN  0 R  0 Interrupt cycle Instruction cycle Fetch and decode instructions IEN FGI FGO Execute R  1 실행 단계 동안에 제어장치는 IEN을 검사 IEN=0: 프로그램이 인터럽트 사용을 요구하지 않으므로 제어장치는 다음 명령어 사이클을 계속한다. IEN=1: 제어장치는 플래그 비트를 검사하여 R f/f을 설정한다 실행 단계 마지막에서 제어 장치는 R f/f을 검사 R=0 : 보통의 instruction cycle로 들어감 R=1 : Interrupt cycle로 들어감 컴퓨터시스템구조

명령어 사이클 (20) 입출력 명령어 및 인터럽트 명령어 사이클 수정 Execution Phase : R F/F  1 if IEN (FGI + FGO)T0T1T2 T0T1T2 (IEN)(FGI + FGO): R  1 Fetch & Decode Phase : Replace T0, T1, T2 with R'T0, R'T1, R'T2 Interrupt cycle : RT0: AR  0, TR  PC RT1: M[AR]  TR, PC  0 RT2: PC  PC + 1, IEN  0, R  0, SC  0 컴퓨터시스템구조

명령어 사이클 (21) 입출력 명령어 및 인터럽트 인터럽트 사이클 실행 예: 메모리 0번지는 반환 주소를 저장하는 장소 Interrupt 발생시 항상 메모리 1번지로 실행 제어 이동(branch) Interrupt cycle에서 항상 IEN=0으로 함  ISR에서 Interrupt를 받기 위해서는 ISR 앞부분에서 반드시 ION 명령을 실행해야 함 After interrupt cycle BUN 1120 1 PC = 256 255 Before interrupt Main Program I/O PC = 1 256 Memory Interrupt Here! 컴퓨터시스템구조

기본 컴퓨터의 완전한 기술 (1) 기본 컴퓨터 동작의 전체 흐름도: 컴퓨터시스템구조 =1 (I/O) =0 (Register) =1(Indir) =0(Dir) start SC  0, IEN  0, R  0 R AR  PC R’T0 IR  M[AR], PC  PC + 1 R’T1 AR  IR(0~11), I  IR(15) D0...D7  Decode IR(12 ~ 14) R’T2 AR  0, TR  PC RT0 M[AR]  TR, PC  0 RT1 PC  PC + 1, IEN  0 R  0, SC  0 RT2 D7 I Execute I/O Instruction RR AR <- M[AR] Idle D7IT3 D7I’T3 D7’IT3 D7’I’T3 Execute MR =0(Instruction =1(Interrupt Cycle) Cycle) =1(Register or I/O) =0(Memory Ref) D7’T4 컴퓨터시스템구조

기본 컴퓨터의 완전한 기술 (2) 기본 컴퓨터에 대한 제어 함수와 마이크로 연산 Fetch Decode Indirect Interrupt Memory-Reference AND ADD LDA STA BUN BSA ISZ RT0: RT1: RT2: D7IT3: RT0: RT1: RT2: D0T4: D0T5: D1T4: D1T5: D2T4: D2T5: D3T4: D4T4: D5T4: D5T5: D6T4: D6T5: D6T6: AR  PC IR  M[AR], PC  PC + 1 D0, ..., D7  Decode IR(12 ~ 14), AR  IR(0 ~ 11), I  IR(15) AR  M[AR] R  1 AR  0, TR  PC M[AR]  TR, PC  0 PC  PC + 1, IEN  0, R  0, SC  0 DR  M[AR] AC  AC  DR, SC  0 AC  AC + DR, E  Cout, SC  0 AC  DR, SC  0 M[AR]  AC, SC  0 PC  AR, SC  0 M[AR]  PC, AR  AR + 1 DR  DR + 1 M[AR]  DR, if(DR=0) then (PC  PC + 1), SC  0 T0T1T2(IEN)(FGI + FGO): 컴퓨터시스템구조

기본 컴퓨터의 완전한 기술 (3) 기본 컴퓨터에 대한 제어 함수와 마이크로 연산 (계속) Register-Reference CLA CLE CMA CME CIR CIL INC SPA SNA SZA SZE HLT Input-Output INP OUT SKI SKO ION IOF D7IT3 = r IR(i) = Bi r: rB11: rB10: rB9: rB8: rB7: rB6: rB5: rB4: rB3: rB2: rB1: rB0: D7IT3 = p p: pB11: pB10: pB9: pB8: pB7: pB6: (Common to all register-reference instr) (i = 0,1,2, ..., 11) SC  0 AC  0 E  0 AC  AC E  E AC  shr AC, AC(15)  E, E  AC(0) AC  shl AC, AC(0)  E, E  AC(15) AC  AC + 1 If(AC(15) =0) then (PC  PC + 1) If(AC(15) =1) then (PC  PC + 1) If(AC = 0) then (PC  PC + 1) If(E=0) then (PC  PC + 1) S  0 (Common to all input-output instructions) (i = 6,7,8,9,10,11) AC(0-7)  INPR, FGI  0 OUTR  AC(0-7), FGO  0 If(FGI=1) then (PC  PC + 1) If(FGO=1) then (PC  PC + 1) IEN  1 IEN  0 컴퓨터시스템구조

기본 컴퓨터의 설계 (1) 기본 컴퓨터의 하드웨어 요소 메모리 장치: 4096 x 16. 9’s 레지스터: AR, PC, DR, AC, IR, TR, OUTR, INPR, SC 7’s 플립플롭 (Status): I, S, E, R, IEN, FGI, and FGO 2’s 디코더: 3x8 Opcode decoder, 4x16 timing decoder 공통 버스: 16 bit width 제어 논리 게이트들 가산 논리 회로(Adder and Logic circuit): AC 연결됨. 컴퓨터시스템구조

기본 컴퓨터의 설계 (2) 제어 논리 게이트(Control Logic Gates) 입력: 출력: 그림 5.6의 제어 논리 게이트 블록도에 제시된 입력 AC(0-15), DR(0-15), 7’s 플립플롭 등 출력: 9’s 레지스터의 입력 제어 신호 메모리의 읽기 & 쓰기 제어 신호 플립플롭에 대한 Set, Clear, Complement 제어 신호 버스를 위한 레지스터 선택 제어 신호 S2, S1, S0 AC에 대한 가산 논리 회로 제어 신호 컴퓨터시스템구조

기본 컴퓨터의 설계 (3) 레지스터와 메모리에 대한 제어 레지스터 제어 입력은 LD(로드), INR(1-증가), CLR(클리어) 등에 연결 예: AR 레지스터의 제어 입력 R’T0: AR  PC LD(AR) R’T2: AR  IR(0-11) LD(AR) D’7IT3: AR  M[AR] LD(AR) RT0: AR  0 CLR(AR) D5T4: AR  AR + 1 INR(AR) LD(AR) = R'T0 + R'T2 + D'7IT3 CLR(AR) = RT0 INR(AR) = D5T4 AR LD INR CLR Clock To bus 12 From bus D' I T R D 7 3 2 4 컴퓨터시스템구조

기본 컴퓨터의 설계 (4) 레지스터와 메모리에 대한 제어 예: 메모리 읽기 제어 입력 메모리 제어 입력: READ, WRITE 읽기 제어 입력: 표 5-6에서 메모리 읽기 연산 “ ← M[AR]”을 수행하는 문장을 검색 제어 함수: READ=R’T1+D7’IT3+(D0+D1+D2+D3)T4 컴퓨터시스템구조

기본 컴퓨터의 설계 (5) 단일 플립플롭에 대한 제어 7개 플립플롭에 대한 제어 게이트의 회로도 동일하게 설계 예: IEN( Interrupt Enable) 플립플롭 제어 pB7: IEN  1 (I/O Instruction) pB6: IEN  0 (I/O Instruction) RT2: IEN  0 (Interrupt) p = D7IT3 (Input/Output Instruction) D I T3 7 J K Q IEN p B 6 T 2 R 컴퓨터시스템구조

기본 컴퓨터의 설계 (6) 공통 버스에 대한 제어 16 비트 공통 버스는 선택 입력 S2, S1, S0에 의해 제어 Let x1~x7 : 특정 레지스터나 메모리를 선택하는 논리식 버스의 선택 회로 위한 인코더 진리표: x1 : AR 레지스터 선택 논리식 x1 x2 x3 x4 x5 x6 x7 S2 S1 S0 selected register 0 0 0 0 0 0 0 0 0 0 none 1 0 0 0 0 0 0 0 0 1 AR 0 1 0 0 0 0 0 0 1 0 PC 0 0 1 0 0 0 0 0 1 1 DR 0 0 0 1 0 0 0 1 0 0 AC 0 0 0 0 1 0 0 1 0 1 IR 0 0 0 0 0 1 0 1 1 0 TR 0 0 0 0 0 0 1 1 1 1 Memory x1 x2 x3 x4 x5 x6 x7 Encoder S 2 1 Multiplexer bus select inputs D4T4: PC  AR D5T5: PC  AR x1 = D4T4 + D5T5 컴퓨터시스템구조

기본 컴퓨터의 설계 (7) 누산기 논리의 설계 AC 레지스터와 관련 회로 컴퓨터시스템구조

기본 컴퓨터의 설계 (8) 누산기 논리의 설계 AC 레지스터 제어 컴퓨터시스템구조

기본 컴퓨터의 설계 (9) 누산기 논리의 설계 가산 논리 회로 컴퓨터시스템구조