CS 43

Lecture 14: The Processor - 3

경희대학교 김정욱 교수님의 컴퓨터 구조 수업을 기반으로 정리한 글입니다.Overview of PipeliningPipelining▶ Pipelining - Laundry Example동기: 직렬적으로 작동하는 방식으로, 하나의 task가 끝날 때까지 기다렸다가 다음 task가 실행된다.비동기: 병렬적으로 작동하는 방식으로, 한 번에 여러 task가 동시에 병렬적으로 실행된다.Pipelining 기법은 여러개의 명령어를 비동기로 처리하는 기술로, 속도가 빠르다는 장점이 있다.여러 instruction이 overlapped 되도록, 즉 동시에 수행하도록 하는 implementation technique (구현 기술)이다. ※ single cycle path 방식 (하나의 instruction이 끝나야 그다음..

CS/컴퓨터 구조 2024.12.01

Lecture 13: The Processor - 2

경희대학교 김정욱 교수님의 컴퓨터 구조 수업을 기반으로 정리한 글입니다.Creating a Single Datapath▶ datapath components1. R-Format▶ Datapath for the memory instructions and R-type instructions 1, 2R-format은 MemWrite와 MemRead signal이 안 띄워지기 때문에 Read data 2에서 Write data로 가는 것은 쓰레기 값이다.이렇게 MemWrite, MemRead, control signal에 의해 유효한 값인지 아닌지 결정이 된다. 3더한 값이 주소인 경우엔 ALU의 연산 결과가 Address로 유효한 값이 가지만, 여기 더한 값이 데이터 값이기에 MUX로 간다.이때 어차피, me..

CS/컴퓨터 구조 2024.11.29

Lecture 12: The Processor - 1

경희대학교 김정욱 교수님의 컴퓨터 구조 수업을 기반으로 정리한 글입니다.Datapath of the Processor▶ Datapath of the Processor ※ Processor: 컴퓨터를 실행하는 계산을 수행하는 integrated electronic circuit으로, 쉽게 말해 CPU라고 볼 수 있다.※ Datapath: instruction을 처리하는 path ※ Instruction memory: code가 담겨있는 메모리※ Data memory: Stack 혹은 Heap에서 저장된 값이 담겨있는 메모리※ 위 두 메모리는 실제론 하나의 같은 메모리이다. Fetch stage, decode stage, and execute stage, 이렇게 3개의 stages가 반복된다. 회로의 시작점..

CS/컴퓨터 구조 2024.11.27

Lecture 10: Arithmetic for Computers - 2

경희대학교 김정욱 교수님의 컴퓨터 구조 수업을 기반으로 정리한 글입니다.Floating Point▶ C code example 위 코드를 보면 "Hello World!"가 10번 반복될 것 같지만,실제로는 무한히 반복한다.그렇다면, 컴퓨터 속 2진수를 사용해 floating point를 어떻게 나타내야 할까? Floating point (부동 소수점)Floating Point는 쉽게 말해, 소수점이다. Floating point는 분수, 엄청 큰 수 (ex) 10^20), 엄청 작은 수 (ex) 10^-20)를 나타낼 때 사용된다. (실수 표현 방식)때문에 값을 나타내는 가수부와 소수점의 위치를 나타내는 지수부로 이루어진다.▶ Normalized scientific notation (Binary) ex)..

CS/컴퓨터 구조 2024.10.17

Lecture 10: 설계 - 3

경희대학교 김정욱 교수님의 소프트웨어 공학 수업을 기반으로 정리한 글입니다.정적 모델링정적 모델링 - 구조적 다이어그램클래스 다이어그램: 클래스와 클래스가 가지는 속성, 클래스 사이의 관계 표현오브젝트 다이어그램: 클래스에 속한 사물(객체)들, 즉 인스턴스(Instance)를 특정 시점의 객체와 객체 사이의 관계로 표현컴포넌트 다이어그램: 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 표현 (파일들 끼리의 연결)▶ 정적 모델링 - 구조적 다이어그램클래스 다이어그램클래스 다이어그램시스템 입장에서 클래스들 간의 관계를 나타낸 것으로, 클래스의 정적인 정의와 관계를 표현한다.이때, 객체가 아닌 클래스는 본질적으로 정적(Static)이다. (시간과 조이 개임되지 않기 때문) Use case diagram을 설..

Lecture 09: 설계 - 2

경희대학교 김정욱 교수님의 소프트웨어 공학 수업을 기반으로 정리한 글입니다.UML 모델링이란?UML (Unified Modeling Language)객체 지향 프로그램 설계를 표현하기 위해 사용하는 표기법, 즉 도표 그리는 방법이다. (절차 지향은 UML과 관련 X) 이는 설계 단계 뿐만 아니라 요구분석, 구현 단계에서도 사용 가능하여,개발자간 의사소통(요구분석 -> 설계 -> 구현)을 원활하게 이루어지게 하기 위하여 표준화한 모델링 언어이다.(실제 언어는 X) 여기서 모델링은 중요한 개념과 특성, 개념들 사이의 관계를 파악해 다이어그램으로 정형화하는 것을 의미,즉 UML을 사용하면 시스템을 가시화, 명세화, 문서화할 수 있다. ※ 요구 분석 때 만드는 Use Case diagram도 UML 중 하나이다..

Lecture 09: Arithmetic for Computers - 1

경희대학교 김정욱 교수님의 컴퓨터 구조 수업을 기반으로 정리한 글입니다.Arithmetic Operation▶ MIPS code▶ ALU (Arithmetic and Logical Unit) ALU사칙 연산을 담당하는 하드웨어이다. (덧셈, 뺄셈, 곱셈 - 덧셈의 연속, 나눗셈 - 뺄셈의 연속)입력 2개: 연산할 레지스터 2개에 대응하는 각각의 값들Opcode: 어떤 연산을 할지 결정출력 2개: 연산 결과를 저장할 레지스터, Overflow 확인 위한 StatusAddition and Subtraction1. Addition (binary)▶ Addition▶ carry (올림수) carry: 올림수 2. Subtraction (binary)▶ Subtraction: A - B (뺄셈)▶ Subtract..

CS/컴퓨터 구조 2024.10.16

Lecture 08: 설계 - 1

경희대학교 김정욱 교수님의 소프트웨어 공학 수업을 기반으로 정리한 글입니다.소프트웨어 설계(Design)란? 설계개발될 제품에 대한 의미있는 공학적 표현프로그램 구현에 들어가기 전에 소프트웨어를 구성하는 뼈대를 정의해 구현의 기반을 만드는 것설계자는 다양한 제약 조건을 만족시킬 수 있는 최적의 설계안을 만들고, 설계를 평가할 기준도 정량적으로 명시해야 한다. 좋은 설계가 되기 위한 조건'설계서'는 '요구분석 명세서'의 내용을 모두 포함해야 한다.유지보수가 용이하도록 추적이 가능해야 한다.변화에 쉽게 적응할 수 있어야 한다. ex) 새로운 함수와의 연동시스템 변경으로 인한 영향이 최소화되도록 국지적(한정적)이어야 한다. ex) 모듈화'설계서'는 읽기 쉽고 이해하기 쉽게 작성되어야 한다.설계만 잘 되면 구현..

Lecture 08: Instructions - Language of the Computer - 5

경희대학교 김정욱 교수님의 컴퓨터 구조 수업을 기반으로 정리한 글입니다.Translating and Starting a ProgramTranslation hierarchy for C language (번역 계층)▶ Translation hierarchy for C language 어셈블러는 0과 1로 단순히 변환하는데,이때 파일을 obj 파일이라고 한다. (0과 1로 이루어진 파일) 그리고 이러한 obj 파일을 여러 개 연결하여 하나의 소프트웨어, 실행 가능한 exe 파일을 링커가 만들고,이렇게 만들어진 exe를 더블 클릭해서 사용자가 사용하겠다고 하면, 로더는 이 파일을 메모리 (RAM)에 올려 놓는다. 1. CompilerHigh-level language code -> assembly languag..

CS/컴퓨터 구조 2024.10.14

Lecture 07: Instructions - Language of the Computer - 4

경희대학교 김정욱 교수님의 컴퓨터 구조 수업을 기반으로 정리한 글입니다.Compilde MIPS Code ExamplesCompiling steps1. Allocate registers to program variables변수마다 레지스터를 할당한다. 2. Produce code for the body of the procedure함수의 코드를 직접 컴파일, 즉 assembly code를 작성한다. 3. Preserve registers across the procedure invocation(호출)레지스터 보존 여부, 즉 callee로 가기 전, 레지스터에 저장된 값을 메모리에 저장할지 말지를 결정한다.ex) 레지스터 보존 - $s0, $ra▶ Compiling stepsCompilde MIPS Cod..

CS/컴퓨터 구조 2024.10.14