본문 바로가기

2학년 2학기/컴퓨터 구조62

9.5 RISC pipeline RISC 아키텍쳐에서는 명령어를 3단계로 나누어 처리한다. 각 단계는 병렬로 실행되며, Pipelining을 통해 처리 속도를 높인다.  I : Instruction Fetch (명령어 가져오기)A : Decode, Read Registers (명령어 해독 및 레지스터 읽기)E : Execute (실행) 1. Data Manipulation Instructions: 데이터 조작 명령(예: 산술 연산, 논리 연산)를 처리한다. I : Instruction Fetch (명령어를 메모리에서 가져오기)A : Decode, ALU operations 명령어 해독 및 실행할 연산 결정필요한 레지스터 값을 읽기ALU를 통해 산술 또는 필요한 레지스터 값을 읽는다.E : Write a register (연산 결과를 레.. 2024. 11. 24.
9.4 Instruction pipeline instruction pipline   위의 Fetch, Decod, Excute를 pipeline으로 만들 수 있는데 오류가 발생할 수 있다.  위의 사진과 같이 EX에서 branch를 수행해야하는데, 아직 다음 명령어가 Fetch되지 않았기 때문에 어떤 명령어로 점프해야하는지 알 수 없다.   따라서, 아래와 같이 다음 Segment를 지연시켜서 EX 다음에 FI가 실행되도록 만들어야한다. Pipelining에서 발생할 수 있는 주요 문제점(Hazards) Structural Hazards (구조적 해저드): 하드웨어 Resource가 부족해서 동시에 실행되는 명령어들이 서로 충돌할 때 발생한다.  Fetch 시킬수 있는 코드가 하나만 있을 때 동시에 FO와 FI가 일어나면 충돌이 일어날 수 있다. .. 2024. 11. 24.
9.2 Pipelining Pipelining이란?하나의 명령어를 여러 단계로 분할하여 처리 속도를 높이는 방식이다.   이렇게 i가 1 ~ 7인 경우에 R1 * R2 + R4 를 하는 연산이 있다고 했을 때 이 경우 Pipelining을 이용하면 아래와 같이 각 세그먼트가 넘어갈 때마다 다음 값들이 순서대로 다음 연산을 대기하는 것을 볼 수 있다.   Time diagram  즉, Segment 개수 만큼 빨라진다는 것이다. 2024. 11. 24.
9.1 Parallel processing(Instruction Level Parallelism) Instruction Level Parallelism이란?한 프로그램에서 독립적인 여러 명령어를 동시에 실행하는 것을 말한다.  Processor Register가 명령어 실행에 필요한 데이터를 저장하고, 각 기능 유닛으로 데이터를 전달하게된다. 병렬적으로 데이터를 전달해서 유닛에서는 다양한 연산을 동시에 수행할 수 있다. 2024. 11. 24.
8.8 Reduced Instruction Set Computer (RISC) RISC (Reduced Instruction Set Computer)란?: RISC는 명령어들을 단순화하여 효율성과 성능을 극대화하려는 CPU 설계 방식이다.   RISC의 주요 특징 명령어 개수 감소 (Relatively few instructions):주소 지정 모드 감소 (Relatively few addressing modes):메모리 접근 제한 (Memory access limited to load and store instructions):CPU 레지스터 내 연산 (All operations done within the registers):고정 길이 명령어 (Fixed length instruction format):단일 사이클 명령어 실행 (Single cycle instruction ex.. 2024. 11. 17.
8.7 Program control Program control instruction: 어느 위치의 명령어를 수행하게 할 것인지를 제어하는 명령어이다. 즉, 프로그램의 흐름을 변경하기 위해 프로그램 카운터(Program Counter, PC) 값을 수정하는 명령어이다. 예시로는 Branch, Skip, Call, Return등이 있다.  Status Bit ConditionsC(Carry) : 연산 시 마지막 자리 올림수 C₈이 1이면 설정S(Sign) : 결과의 최상위 비트 F₇이 1이면 설정(부호를 나타낸다.)Z(Zero) : 산술 논리 연산 (ALU)의 결과가 모두 0이면 설정V(Overflow) : 올바은 범위를 초과했을 때 설정 - XOR(C₇, C₈​) = 1 -> 즉, 마지막 Carry와 그 전 Carry의 값이 다르면,  O.. 2024. 11. 17.
8.6 Data transfer and manipulation Data Transfer Instructions: 데이터 전달 명령어는 다양한 주소 지정 모드(Addressing Modes)에서 사용     Data Manipulation Instructions: 데이터의 연산 및 변환 2024. 11. 17.
8.5 Addressing modes Addressing mode의 종류이름설명예시Implied Mode명령어 자체가 데이터를 암시적으로 포함하며, 별도의 주소 지정이 필요하지 않음.ADD X : AC Immediate Mode명령어에 데이터 값이 직접 포함되어 있음.ADD R1, #5 (5는 즉시값)Register Mode데이터가 CPU의 레지스터에 저장되어 있음.ADD R1, R2Register Indirect Mode레지스터에 저장된 주소를 사용해 메모리에서 데이터를 읽음.ADD R1, (R2)Auto-increment Mode데이터 접근 후 레지스터 값이 자동으로 증가함.MOV R1, (R2)+Auto-decrement Mode레지스터 값을 감소시킨 후 데이터를 접근함.MOV R1, -(R2)Direct Address Mode명령어에.. 2024. 11. 17.
8.4 Instruction formats CPU 구조에 따른 명령어 형식1. Single Accumulator Organization: 대부분의 연산이 AC와 Memory 사이에서 이루어지는 구조이다. 데이터를 처리할 때 항상 AC에 값을 적재하고 결과를 다시 AC에 저장한다.   ADD X ➡️ AC    2. General Register Organization: CPU에 여러개의 General 레지스터가 있는 구조이다. 연산은 주로 레지스터 끼리 이루어지며, 메모리 접근이 줄어든다.ADD R1, R2, R3 ➡️ R1 ← R2 + R3ADD R1, R2 ➡️ R1 ← R1 + R2   3. Stack Organization: Stack을 사용해서 데이터를 저장하고 연산을 하는 구조이다. 명령어는 암묵적으로 Stack의 최상위 두 값을 이용.. 2024. 11. 17.
8.3 Stack organization Stack은 메모리 접근을 편리하게 하기 위한 하나의 방식이다.  Stack에 대한 기본적인 설명 Stack의 PUSH(쓰기)와 POP(읽기)   [PUSH]   [POP]   주소를 참조하는 것들PC명령어의 주소를 저장 AR피연산자의 주소를 저장 SPStack을 접근하고자하는 메모리의 주소  RPN (Reverse Polish Notation)RPN이라는건 연산자(+, -, *, / 등)를 피연산자(숫자나 변수) 뒤에 쓰는 후위 표기법이다.  이 방식은 Stack을 활용하여 수식을 계산하는 데 매우 적합하다.   왜 RPN을 사용하는가?일반적인 연산과는 다르게 우선순위를 고려할 필요없다. 즉, ()가 필요없다.따라서, 연산자 순서가 정해져있기 때문에 스택을 이용해 계산 과정을 쉽게 구현할 수 있다. 표.. 2024. 11. 17.
8.2 General register organization 공용 ALU와 레지스터 세트 Register selection과 ALU Operations     레지스터 연산 예시 2024. 11. 17.
8.1 Introduction(생략) 해당 부분은 5장과 7장에 대한 간단한 요약 설명이므로 생략 2024. 11. 17.
7.4 Design of control unit / Fuction Field Fuction Field - F1, F2, F3 설계하기  왼쪽 표를 보고 오른쪽 논리 회로를 살펴보면 된다. 예를 들어, ADD는 F1에서 0 0 1이기 때문에 F1 Decoder에서는 0 0 1이 입력으로 들어오면 ADD 연산을 내보낸다. AND는 F2에서 0 1 1이기 때문에 F2 Decoder에서는 0 1 1이 입력으로 들어간다. 다른 부분들도 마찬가지로 디코더를 통해서 제어를 할 수 있다.    control unit 설계하기 ⭐️⭐️⭐️  빨간 박스 내부의 Control Unit을 설계해보자. 2024. 11. 9.
7.3 Micro-program example 7장에서 다루는 컴퓨터 구조AR(LD)Mux를 통해서 PC의 값이 전달 될지, DR의 값이 전달 될지 결정된다. PC(LD)Mux를 통해서 PC의 값이 전달 될지, 메모리 값이 전달될지, AC의 값이 전달 될지 결정된다.   Control memory: micro program들이 저장되는 메모리CARControl memory의 주소가 들어가는 레지스터 SBRreturn address가 저장되는 레지스터   명령어의 format - Memory에 적재되는 명령어(16bit) Opcode로 Control Memory의 주소로 변환하는 과정인 mapping을 각 Opcode에 하면 아래와 같다. ADD인 0 0 0 0 ➡️ 0 0 0 0 0 0 0BRANCH인 0 0 0 1 ➡️ 0 0 0 0 1 0 0ST.. 2024. 11. 9.
7.2 Address sequencing - Mapping 중점 Address sequencing: Control Memory에 있는 여러 Micro Instrction(명령어)들 중에서  어떤 Micro Instrction(명령어)을 수행하는지를 결정하는 것  명령어를 실행하기 위한 절차 1. Instruction fetch routine(명령어 가져오기)명령어를 가져오는 과정 2. Effective address 결정명령어의 실제 메모리 주소를 결정하는 과정 3. Fetched instruction(가져온 명령어 실행)가져온 명령어에 대한 구체적인 실행을 수행한 후, 다시 명령어 가져오기 루틴으로 제어가 반환  Address sequencing하는 4가지의 방법    나머지는 다른 장에서 설명하고 우선 Mapping을 이용한 방법에 대해서 살펴보자 MappingI.. 2024. 11. 9.
7.1 Control memory 5장에서는 하드웨어적(회로)으로 구현된 부분이라면 7장에서는 소프트웨어적(프로그램)으로 구현된 부분이다.  5장에서는 메모리의 프로그램 영역에 명령어들이 모여 하나의 프로그램을 이루었다. 이와 다르게 7장에서는 Control memory 내부에 micro program에 의해서 명령어가 수행되는 것이 Micro Computer라고 한다.  용어 Control Memory: Micro Program들이 저장되어 있는 메모리Micro Program: 제어 단어(Control word)를 출력하는 프로그램Control Word: 특정 클럭 신호에서 수행될 마이크로 연산들의 조합Control Variable: Control Word의 각각을 의미하며, 특정 마이크로 연산을 수행할지를 결정하는 변수Micro-In.. 2024. 11. 9.
2024.11.07 - ch5관련 문제(기말고사 다수 출제 예정 특히, 1번 2번) 1. 기본 컴퓨터에서 AC에는 16진수로 ABCD가 들어 있고, 초기에 PC의 값은031이며, E는 1이다. 다음의 명령어가 수행된 후 AC, E, PC, AR, IR 각각의 내용은 무엇인가?(a) CLA, (b) CMA   오른쪽 위 표는 T에 따라 진행되는 타이밍도를 그린것이다. T₀에서는 PC(명령어 주소)를 AR(유효 주소)에 저장한다. T₁에서는 메모리에서 유효주소에 있는 명령어를 IR(명령어 저장 레지스터)에 저장 + 현재 PC(명령어 주소)를 다음 PC(명령어 주소)로 변경한다. T₂에서는 IR에 저장된 명령어를 기준으로 최상위 bit에 있는 값을 I에 저장하고 0에서 11번째 bit의 값을 AR에 저장한다.T₃에서는 메모리의 피연산자 주소가 있는 곳의 값을 AR에 저장한다. (간접 주소 지.. 2024. 11. 7.
5.10 Design of accumulator logic 해당 부분을 확대해보면 아래와 같다.  자, 이제 이전에 설계했던 방식대로 " AC ← ? " 형태인 수식을 모두 가져와서 분류하는 작업을 해보자.   이렇게 분류된 것을 바탕으로 논리 회로를 설계해보면 아래와 같다.  위의 식은 식의 왼쪽 조건의 경우만 따져서 만든 논리 회로이기 때문에 정확한 설계가 아니다. 따라서 AND와 ADD 다양한 연산을 신제 피연산자와 만든 논리 회로는 아래의 사진과 같다. 2024. 10. 27.
5.9 Design of basic computer 1. 기본적인 컴퓨터의 구성요소     2. Register의 LD, INR, CLR 설계AR의 LD, INR, CLRAR을 변경한다는 것은 " AR ← ? " 형태의 모든 수식들이다. 따라서, 이전에 배웠던 " AR ← ? " 형태를 모두 가져와보면 아래와 같다.  이렇게 "AR ← ?" 가져왔을 때 상위 3개는 Load에 관한 내용이고, RT₀은 Clear에 관한 내용, D₅T₄ 는 Increment에 관한 내용이라는 것을 알수 있다.  그래서 분류를 해보면 위의 사진과 같고 이를 논리 게이트로 표현해보자.   이런식으로 해당 레지스터를 변경시키는 모든 수식을 가져오고 그 변경된 값을 LD, INR, CLR로 분리하여 논리 게이트를 만들 수 있다.    3. Memory의 Read 설계 Memory를.. 2024. 10. 27.
5.8 Complete computer description 전체적인 Flowchart   전체적인 Functions 이표를 보고 외우는 것은 어렵지만, 이 표를 보고 어떤 동작인지, 각각의 변수들의 의미하는 것이 무엇인지는 알아야한다. 2024. 10. 27.
5.7 Input-output and interrupt 1. 기존의 방식(비효율적인 방법)   AC, INPR, OUTR의 기본 역할 AC(누산기): 16bit 크기의 레지스터로, 컴퓨터의 계산과 명령어 수행중 발생하는 중간 결과를 일시적으로 저장하는 역할을 한다. INPR(입력 레지스터): 8bit 크기의 레지스터로, 키보드에서 입력된 데이터를 잠시 보관해두는 공간이다. OUTP(출력 레지스터): 8bit 크기의 레지스터로, 프린터로 데이터를 보내기 전에 일시적으로 데이터를 저장하는 공간이다.    FGI와 FGO 플래그의 역할 FGI(Input Flag): 키보드로부터 입력이 완료되었을 때 1로 설정한다. FGI가 1이 되면 컴퓨터는 입력된 데이터를 처리할 준비가 되었다는 신호로 인식한다. FGO(Output Flag): 프린터로 데이터를 보낼 준비가 되.. 2024. 10. 27.
5.6 Memory reference instructions Memory reference instructions란?  위 format에서 Opcode의 값이 0 0 0 ~ 1 1 0으로 명령어가 결정이 되고, I의 값이 0이면 직접 참조, 1이면 간접 참조인 Instruction이다.  AND(Opcode의 값이 0 0 0인 경우): 유효 주소가 가리키고 있는 메모리의 값과 AND 연산을 한 후 AC에 저장하는 것 Opcode의 값이 0 0 0 으로 동일하지만 I의 값에 따라서 16진수 표현 방식이 달라진다.즉, 간접 참조라면 1 0 0 0 x x x으로 8 x x x가 되고 직접 참조라면 0 0 0 0 x x x으로  0 x x x가 된다.      ADD(Opcode의 값이 0 0 1인 경우): 유효 주소가 가리키고 있는 메모리의 값과 ADD 연산을 한 후 .. 2024. 10. 27.
5.5 Instruction cycle + Register reference instruction 하나의 Instruction(명령어)는 하나의 사이클로 이루어져있다. 하나의 사이클을 지나면서 명령어가 수행된다. 사이클의 종류    Fetch & Decode(모든 명령어에 똑같이 적용)    [T₀: AR ← PC]   [T₁ : IR ← M[AR], PC ← PC + 1]   [T₂ : D₀ ,…, D₇ ← Decode IR(12 - 14), AR ← IR(0 - 11), I ← IR(15)]   명령어 사이클의 전체적인 Flow chart     Register reference instruction: I가 0이고, Opcode가 1 1 1인 경우  Bⁱ는 Register operation의 12bit에서 i 번째를 제외한 나머지는 0인 것이다. 즉, B₂는 0 0 0 0 0 0 0 0 0 1 0.. 2024. 10. 27.
5.4 Timing and control IR(Instruction Register): 현재 CPU가 실행할 명령어를 저장한다. 3x8 decoder + I: Opcode, 메모리 참조 명령어를 사용할지, 레지스터 참조 명령어를 참조할지, I / O 명령어를 사용할지를 결정 4x16 decoder: 명령어를 순차적으로 실행하기 위해 클럭과 연결된 시퀀스 카운터를 사용해서 제어 신호를 생성한다. Control Logic Gates: 디코더에서 나온 신호를 기반으로 제어 논리가 구성되어 CPU 내부 작업 흐름을 제어하는 신호를 생성한다. Timing   클럭 신호(Clock Signal)와 타이밍 신호(Timing Signal) 간의 관계  여기서 중요한 것은 실제 데이터 전송은 클럭이 상승하는 순간 발생한다. 클럭의 신호는 주기적으로 변경되는데,.. 2024. 10. 27.
5.3 Computer Instructions Instructions format의 3가지 형태 1. Memory-reference instruction (메모리 참조 명령어)Opcode명령어가 어떤 연산을 수행할지를 나타낸다. 000 ~ 110까지 작성가능하다.I명령어가 직접 주소 지정 방식(I=0)인지, 간접 주소 방식(I=1)인지를 나타낸다. Address명령어가 참조하는 메모리의 주소를 나타낸다. 사용 예시: 메모리에서 데이터를 읽어오는 연산이나 메모리에 데이터를 저장하는 연산을 하는 것  2. Register-reference instruction (레지스터 참조 명령어)Opcode111로 고정되어 있으며 I에 의해서 레지스터 참조 명령(I=0)인지, 입출력 명령(I=1)인지가 결정된다. I레지스터 참조 명령(I=0)인지, 입출력 명령(I=.. 2024. 10. 27.
5.2 Computer registers [Regiters]: 각각의 특수한 기능을 하는 레지스터를 지정을 해놓은 방식이다.    [위 레지스터들을 갖는 기본 컴퓨터에서의 데이터 이동 방식 - Bus system]   LD(Load), INR(Increment), CLR(Clear)를 갖는 레지스터해당 레지스터(AR, PC, DR, AC, TR)는 우리가 앞에서 배웠던 병렬 로드 카운터 레지스터를 12bit로 구현한 것이다.     LD(Load)를 갖는 레지스터해당 레지스터(IR, OUTR)는 우리가 앞에서 배웠던 병렬 로드 레지스터를 12bit 또는 8bit로 구성한 것이다.   레지스터를 선택하는 방식S2SSRegister000 001AR010PC011DR100AC101IR110TR111Memory  레지스터는 Select에 의해서 레지스.. 2024. 10. 27.
5.1 Instruction codes micro operation(마이크로 연산)들이 모여서 instructions이 되고, 그 instructions이 모여서 프르그램이 된다. ❓ Instruction이란?: CPU가 프로그램에서 수행해야 할 구체적인 작업을 정의하는 기본 명령어이다. 인스트럭션은 연산 코드와 피연산자로 이루어지며, 이를 통해 CPU가 데이터를 처리하고 명령을 수행하게 된다.  Instruction의 기본 포멧즉  instruction은 명령어의 종류와 피연산자의 주소로 이루어져있고, 각각 4bit, 12bit로 이루어져있다. 그리고 피연산자의 값은 16 bit로 이루어져있다.    memory의 구조 메모리의 사이즈는 16bit이고, 메모리 전체의 주소는 instruction의 Adress에 의해서 결정된다. instru.. 2024. 10. 27.
ch1 중요 문제 유형 2024. 10. 17.
ch3 중요 문제 유형 10진수 -567에 대해서 (a) 부호 절대값 표현(b) 부호화된 1의 보수표현(c) 부호화된 2의 보수표현(d)2의 보수 표현을 이용하고 12비트를 사용할 떄 10진수의 최대 최소, 2진수의 최대 최소값을 찾으시오. 2024. 10. 16.
Quiz Session 2 - 15 왜 A0를 Serial input Left에 연결하고, A3를  Serial input Right에 연결을 할까? [Shift Left]| A₆ | A₅ | A₄ | A₃ | | A₂ | A₁ | A₀ | S(left) | [R2] [R1] 우선 Serial input의 개념에 대해서 알아야한다. Serial input이란 빈자리를 채우기 위함이다. 즉, 위의 레지스터에서 ShiftLeft를 통해서 기존의 A₀ 자리에 빈자리가 생겼다. 따라서, 이 빈자리를 Serial input채우는데, 보통 첫 레지스터의 가장 오른쪽 값이 연결된다. 따라서,  A₀ 를 연결해줄 수 있다.   [Shift Ri.. 2024. 10. 16.