Book/COMPUTER ORGANIZATION AND DESIGN RISC-V

1. Computer Abstactions and Technology (1.1 ~ 1.6)

S0LL 2024. 9. 17. 17:25

1.1 Introduction

과거에는 컴퓨터 공상과학이었던 것들

-자동차 안에 들어가는 컴퓨터

 

-휴대전화

 

-유전자 프로젝트 ( 비용 문제 ) 

 

-www ( world wide web )

 

-검색엔진

 

 

컴퓨터의 3가지 타입

-Personal computers(PCs)

개인용, 가장 잘 알려진 형태의 컴퓨터

 

-Servers

네트워크를 통해서만 연결되는 컴퓨터

 

-Supercomputers

하이엔드급의 컴퓨터, 복잡한 과학이나 공학계산 등에 쓰인다.

 

-Embedded computers

가장 광범위한 범주에 있는 컴퓨터이지만 볼 일이 없어 많은 사람들이 모른다.

 

------------------------------------------------------------------------------------------------------------------

1.2 Seven Great Ideas in Computer Architecture

-Use Abstraction to Simplify Design

 

-Make the Common Case Fast 

 

-Performance via Paralleilsm 

 

-Performance via Pipelining 

 

-Performance via Prediction 

 

-Hierarchy of Memories 

 

-Dependability via Redundancy 

 

------------------------------------------------------------------------------------------------------------------

1.3 Below Your Program

운영체제의 중요한 기능들

- 기본적인 입출력 명령을 관리

- 저장공간 및 메모리 할당

- 여러 프로그램이 동시에 사용할 때 안전하게 공유할수 있도록 함.

 

운영체제의 대표적인 종류

-Linux

-Android

-Windows

 

 

From a High-Level Language to the Language of Hardware

-하드웨어에 직접적으로 명령하기 위해서 전기 신호를 보내야 함. ( On / Off )

 

- 0 or 1 -> 우리는 이것을 binary digit 또는 bit 라고 칭함

 

- 컴퓨터는 우리의 명령(instructions)를 따름.

 

- 처음에는 이진수로 컴퓨터와 통신했지만 곧 새로운 표기법을 만듬( 수기로 이진법으로 변경해야 함)

 

- 이 또한 오래 걸리기 때문에 누군가가 이진법 변환 소프트웨어를 개발했고 어셈블러 라고 이름이 붙음.

어셈블러 예시

-이것이 현재까지도 사용되고 있는 어셈블리 언어이다.

 

-(Programming lang)  -> compiler -> (Assembly lang) -> Assembler -> ( Binary Machine lang )

 

- High-level programming Language의 장점

1. 사람들의 언어에 가까워 프로그래머들로 하여금 더 자연스러운 생각을 할 수 있게 한다.

2. 프로그래머들의 생산성을 높인다.

3. 프로그램이 개발된 컴퓨터와 돌깁적으로 운영될 수 있다.

 

------------------------------------------------------------------------------------------------------------------

1.4 Under the Covers

five classic components of the organization of a computer

 

-Central Processor Unit (CPU)

processor라고도 불린다. 

데이터의 경로와 제어를 포함하고, 숫자를 추가하고 테스트하고 I/O 장치를 활성화하는 컴퓨터의 활성 부분

 

-Memory

프로그램이 실행중일 떄 보관되는 위치이며 데이터도 가지고 있다.

 

메모리는 Dram( Dynamic random access memory ) 칩이다.

 

-Cache Memory

프로세서 내부의 또다른 타입의 메모리

(캐시의 비기술적 정의는 데이터를 숨기기에 안전한 장소이다.)

 

Dram Buffer같이 빠르고 작은 메모리들로 구성되어 있다.

 

SRAM ( Static Random-Access Memory ) 은 빠르지만 밀도가 낮아서 비싸다.

 

-Instruction set architecture ( Architecture ) 

프로그램을 올바르게 작동시키기 위해 필요한 모든 정보들을 가지고 있는 하드웨어와 가장 낮은 레벨의 소프트웨어 사이의 추상적인 인터페이스.

 

basic instruction set 과 operating system interface가 application binary interface( ABI ) 라는 것을 제공한다

 

 

-Advantages that Networkd Computers have

communication : Information is exchanged between computers at high speeds

 

Resource sharing : Rather than each computer having its own I/O devices, computers on the network can share I/O devices.

 

Nonlocal access : By connecting computers over long distances, users need not be near the computer they are using.

 

-Network

E

LAN( Local Area Network ) 

WAN ( WIde Area Network ) 

 

------------------------------------------------------------------------------------------------------------------

1.5 Technologies for Building Processors and Memory

Transistor

-전기에 의해 제어되는 온/오프 스위치

 

-무어가 doubling of resources의 지속성을 예측했을때, 칩에 들어가는 트랜지스터 수의 비율을 예상했고,

트랜지스터 수가 수백개에서 수백만 개로 엄청나게 증가한 것을 설명하기 위해 VLSI(Very Large-Scale Integrated) circuit이라는 용어를 만듬.

 

-최근 무어의 법칙의 둔화가 생겨 4배가 증가하는데 6년이 걸린 모습이 보인다.

 

------------------------------------------------------------------------------------------------------------------

1.6 Performance

relationship between Performance and Execution time

반응 시간이 짧아질수록 성능이 향상되는 상관관계식.

x is n times faster than y

두 컴퓨터의 속도를 비교할 때 사용하는 식.

성능비교예시 by computer organization and desing Risc-V edition

 

Measuring Performance

-CPU execution time ( CPU time ) : The actual time the CPU spends computing for a specific task

사람들은 경과 시간을 인식하지 CPU경과시간을 인식하지 않는다.

 

- user CPU time : the CPU time spent in a program itself

 

-system CPU time : the CPU time spent in th operating system performing tasks on behalf of the program

 

 

1-a : 추가 네트워크 채널로 처리량이 증가하고 지연시간이 줄어들기 때문에 응답 시간과 처리량 모두 개선됨.

1-b : 네트워크 소프트웨어가 개선되고 처리량은 동일하므로 응답 시간만 개선됨.

1-c : 메모리만 추가는 네트워크 성능과 직접적인 연관이 없기 때문에 개선되지 않음.

 

2 : B보다 C가 4배 더 빠르므로 B는 28초 걸릴 때 C는 7초 걸림.

 

 

CPU Performance and its Factors

 

위 식을 응용한 예제

 

위의 식과 예제에는 프로그램에 필요한 명령어의 수가 언급되지 않고 있다. 

컴퓨터가 프로그램을 실행하려면 명령어를 실행해야 하므로, 실행 시간은 명령어의 수에 비례할 수밖에 없다.

따라서, 프로그램에 필요한 클럭 사이클 수는 다음과 같이 표현할 수 있다.

                                   CPU 클럭 사이클  = 프로그램에 있는 명령어의 개수 * 명령어 당 평균 클럭 사이클

 

 

-CPU 클럭 사이클 예제

위의 예제를 통해 아래와 같은 식을 얻을 수 있다.

 

 

그럼 이제 위 식을 이용한 예제를 살펴보자.

 

1. Which code sequence executes the most instructions?

ans : Code sequence 1 -> 2 + 1 + 2 = 5

         Code sequence 2 -> 4 + 1 + 1 = 6

         이므로 시퀀스 1의 명령어가 더 적다.

 

2. Which will be faster?

ans : Cpu clock cycles1 : (2*1) + (1*2) + (2*3) = 10

         Cpu clock cycles2 : (4*2) + (1*2) + (1*3) = 9

         이므로 시퀀스 2가 더 빠르다.

 

3. What is the CPI for each sequence?

ans : CPI = CPU clock cycles / Instruction count

         CPI1 = 10 / 5 = 2.0

         CPI2 = 9/6 = 1.5

 

위를 보면 , 두 컴퓨터를 비교할 때 하나의 요소만으로는 성능을 비교할 수 없다.

 

두 컴퓨터를 비교할 때, execution time을 구성하는 세 요소를 반드시 봐야 한다.

위의 글에서는 실행되는 명령어를 변경하면 클럭 주기를 느리게 만들거나 CPI가 더 높아 명령어 수가 낮아지더라도 속도는 빨라지지 않을 수 있다고 말하고 있다. 

 

또한 CPI는 실행되는 명령어에 따라 달라지기 때문에 CPI가 가장 작다고 가장 빠르다고 할 수 없다고 말하고 있다.

 

따라서, 컴퓨터의 성능을 완벽하게 신뢰할 수 있는 척도는 시간뿐이다 라는 것을 알길 바란다.

 

 

 

 

Another Popular Permormance Metrics

 

-MIPS ( million instructions per secont )

 

MIPS = Instruction count / Execution time * 10^6