본문 바로가기

KNU_study/컴퓨터구조

컴퓨터구조(1) Software and hardware of computers

728x90
반응형

 

 

1. Welcome to Computers

 

Computer system이란 매우 생동감 넘치고, 빠르게 발전하는 분야다. 컴퓨터는 크게 세 가지로 분류된다. [1] Personal computers는 개인의 사용을 목적으로 하며, Cost와 Performance 사이의 tradeoff가 중요하다. [2] Servers는 여러 사용자들이 동시에 접속하여 사용하며 보통의 경우 network를 통하여 접속한다. 대용량 워크로드를 처리할 수 있다. [3] Embedded computer는 미리 결정된 응용 프로그램 혹은 소프트웨어 모음을 실행하는데 사용되는 다른 장치 내부의 컴퓨터다. Cost와 power에 대한 엄격한 제한이 있다. 그러나 Performance에 대해서는 필요한 규격을 만족하는 최소한의 기준만 만족시키면 된다. 

최근엔 큰 변화들이 있다. [4] PMD(Personal Mobile Device)란 배터리로 동작하며 인터넷에 무선으로 연결하여 사용한다. 키보드나 마우스 등이 필요없으며 터치스크린 또는 음성 입력을 사용한다. PC처럼 어플(software)을 다운로드하여 설치한다. 스마트폰, 태블릿, 전자 안경, 스마트 워치 등이 이에 해당된다. [5] Cloud computing는 수많은 server들의 colloection을 구축하고, 인터넷을 통해 서비스를 제공한다. 이러한 data center를 WSCs(Warehouse Scale Computers)라고 한다. 

-> SaaS란? Software as a Service로, 소프트웨어 및 데이터를 인터넷을 통해 서비스하며, local client는 브라우저와 같은 작은 프로그램만 동작시킨다. WSCs를 구축하거나 빌려서 SaaS를 제공한다. 일부는 클라우드에서 동작하고, 다른 일부는 PMD 등에서 동작하는 어플리케이션이 등장한다. 

 

 

2. Software and Hardware of computers

 

(1) Software as Hierarchical Layers

 

 

우선 Applications software는 high-level 언어로 작성된다.

System software는 어플리케이션 소프트웨어가 하드웨어를 직접적으로 신경쓰지 않도록 관련 서비스를 제공한다. 징검다리 역할. Operating software, 즉 입출력을 제공하고 메모리를 할당하며 컴퓨터 자원을 공유하는 운영체제도 이 파트에 해당된다. Operating software 외에도 compilers, loaders, assemblers 등이 이 파트에 해당된다. 

Hardware는 컴퓨터의 세부적인 구현에 해당된다. 

 

(2) Computer Language

사람과 사람이 서로 간 의사소통을 할 때엔 '언어'를 사용한다. 사람과 computer가 서로 간 의사소통을 할 때엔 'computer language'를 사용한다. Instruction은 넓은 의미에선 computer language의 Word(단어)를, 정확히는 binary instruction을 의미한다. 

컴퓨터 언어는 크게 2가지로 분류된다. [1] Low-level languages는 머신(마이크로프로세서)에 따라 다른 언어를 의미하며, Machine language 그리고 assembly language 등이 있다. Machine language란 프로세서가 직접 이해하고 실행할 수 있는 1과 0의 string으로 이루어진 2진 명령어로 된 언어다. Assembly language는 mnemonic English abbreviation를 사용하며, 마이크로프로세서가 이용하는 2진 명령어를 이해하기 위한 언어다. [2] High-level language는 모든 머신에서 공통적으로 사용할 수 있는 언어를 의미한다. 어셈블리 언어는 특정 컴퓨터에 고유하기 때문에, 어셈블리 언어로 작성된 프로그램은 한 컴퓨터에서 다른 컴퓨터로 전송할 수 없다. 이 제한을 피하기 위해, 해당 언어가 고안되었다. 예시론 BASIC, FORTRAN, Pascal, Cobol, Ada, C, C++, Java 등이 있다. 

 

(3) Computer Languages and Translation

 

 

Compiler란 High-level language로 쓰여진 프로그램을 어셈블리어로 변환하는 프로그램이다. Assembler란 어셈블리어로 쓰여진 프로그램을 binary machine language로 변환하는 프로그램이다. 물론 Compiler 중에는 곧바로 binary instructions로 변환하는 것도 있다. 

 

(4) Five Classic Components of a Computer

 

 

Input, Output, Memory, Datapath, Control로 구성된다.

Input device는 컴퓨터가 정보를 공급받는 메커니즘이다. 터치 스크린, 카메라, 마이크로폰, 가속도계, 자이로스코프, 자력계 등이 있다. Output device는 연산 결과를 사용자에게 전달하는 메커니즘 또는 다른 컴퓨터를 의미하며 디스플레이(LCD 등), 프린터, 헤드폰잭, 스피터 등이 있다. Memory는 프로그램이 실행 중일 때 프로그램이 보관되는 저장 영역 및 해당 영역을 가리키며, 실행 중인 프로그램에 필요한 데이터를 포함한다. 보통 휘발성이다. Datapath는 연산이 이뤄지는 부분으로 ALU, multiplier, divider, register file 등이 해당된다. Control은 프로그램의 지시에 따라 datapath, memory, IO devices를 명령하는 구성 요소다. Datapath와 control을 합쳐서 CPU(Central Processing Unit) 또는 processor라고 부른다.  

->  Storage devices(SSD, hard disks 등), Wi-Fi network, Bluetooth network 등은 I/O 장치이다. 특히 storage (secondary) memory는 IO로 분류된다는 점을 주의하자. 

-> Volatile엔 SRAM, DRAM 등이 있다. Nonvolatile엔 ROM(전원 꺼져도 저장되는 메모리), PROM, EPROM, EEPROM 등이 있다. 

 

 

3. Instruction Set Architecture

 

Instruction이란 컴퓨터가 수행하는 기본적인 동작들을 지시한다. 바꿔 말해, CPU가 하는 일은 instruction들을 실행하는 것이다. Instruction set이란 특정 computer language의 어휘다. 컴퓨터 언어들은 비슷한 기본 원리들에 근거해서 만들어지므로 서로 비슷하긴 하다. 

Instruction Set Architecture(ISA)란 어셈블리어, 컴파일러 또는 시스템 프로그램 엔지니어들에게 보여지는 컴퓨팅 시스템의 특성들로서, 그냥 아키텍처라고도 한다. Instruction set, Instruction format, Data storage, Addressing modes, Exceptional conditions 등을 포함한다. 또한 ISA는 Software와 Hardware 사이의 연결 고리로서 사용된다. 하드웨어 엔지니어는 ISA를 기준으로 하드웨어 시스템을 설계하고, 소프트웨어 엔지니어는 ISA를 기준으로 프로그래밍한다. 

 

(1) Machine Organization

하드웨어 디자이너의 관점이고, Computer design의 high-level 측면들을 포함한다. Memory system, Bus structure, Design of the internal CPU 등 말이다. Machine Organization은 ISA를 기준으로 만들어진다. 물론, 같은 ISA를 가지면서 organization이 다를 수 있다. 

 

(2) Hardware

Computer의 세부적인 구현(implementation)에 해당된다. 회로, 부품, 칩, 타이밍, 신뢰성, 기능성, 패키징, 파워 등을 포함한다. Hardware 구현은 organization을 기준으로 이루어진다. 물론, 같은 organization을 가지면서 hardware implementation이 다를 수 있다. 

** implementation = machine organization + hardware!!

 

(3) Computer Architecture란? 

좁은 의미론 ISA만을 의미한다.

조금 더 넓게 정의하면 ISA + machine organization.

넓은 의미로는 ISA + machin organization + hardware를 의미한다. 

 

 

4. Computer performance

 

(1) Performance

 

 

본 강의에서는 Response time을 기준으로 성능을 논한다. 이는 abslolute value로서의 성능이며, 보통의 경우 relative performance(상대적인 성능)가 주요 관심사다. Response time이란 특정 작업을 수행하는데 걸리는 시간으로, Execution time 또는 latency라고 한다. 

Relative performance, Computer X가 Computer Y보다 성능이 높다는 것은 다음과 같은 식으로 표현된다. 또한 Relative performanceX/Y는 아래와 같이 정의되며, X가 Y보다 n배 빠르다는 말은 그 아래 식과 같다. 

 

 

(2) 다양한 시간(time)의 정의

성능의 측정 기준인 time은 다양한 방식으로 정의 가능하다. [1] Elapsed time(wall-clock time)이란 작업을 수행하는 전체 시간을 말하며 Disk accesses, memory accesses, IO activities, operating system overhead 등에 소요되는 모든 시간을 포함한다. [2] CPU execution time(CPU time)이란 작업을 수행하기 위해 CPU가 소모한 시간 이며, IO accesses나 다른 프로그램들이 소모한 시간은 포함되지 않는다. 이 중에서도 System CPU  time은 OS가 프로그램 대신 작업을 수행하기 위해 소모한 CPU time이며, User CPU time은 프로그램에서 소모된 CPU time이다. 

우리는 User CPU time에 의한 CPU performance를 측정한다. 

 

(3) Clock Cycle

 

 

Clock이란 일정한 주기의 구형파(square wave signal)이다. 컴퓨터는 Clock을 기준으로 동작을 수행한다. Clock Cycle은 Clock의 한 주기를 의미한다. 컴퓨터는 Clock cycle 단위로 기본적인 동작을 수행하며, 컴퓨터 디자이너들은 성능을 논하는 기준으로 이를 자주 사용한다. 한 clock cycle의 시간을 Clock Period라 하고, clock period의 역수를 Clock Rate라고 한다. 

 

(4) CPU Time and CPI

 

 

CPU 성능은 user CPU time으로 측정한다. 위에서 설명한 clock cycle 개념을 도입하여 위처럼 표현한다.

CPI(cycles per instruction)란 Instruction 1개당 소모되는 clock cycle의 수를 의미한다. CPI를 사용하면 CPU clock cycles = Instruction count x Cycles per instruction 식이 성립한다. (35쪽 예제 참고하자)

 

 

Clock cycle time, instruction count, CPI가 CPU performance를 결정하는 factor이다. 이들을 CPU performance factors라 부른다. 이처럼 CPU의 성능을 측정할 때는 모든 factor들을 고려해야 한다. 일반적으로 CISC는 RISC보다 instruction count가 작지만, CPI가 더 크기 때문에 성능이 더 좋다고 말할 수 없다. 즉 모든 요인들이 성능과 관련되어 있으며, 하나라도 빠트려 생각하면 안된다.  

 

  Instruction count CPI Cycle time
Algorithm &
programming language
O O  
Compiler O O  
ISA O O O
Computer organization   O O
Technology     O

 

CPU performance를 향상시킨다는 것은 CPU performance factor들을 향상시킨다는 것을 의미한다. 위의 표에서, 좌측 요인들은 CPU performance factor들에 영향을 미친다. 이 요인들을 발전시켜서 Instruction count, CPI, Cycle time을 줄이자. 

 

(5) MIPS and MFLOPS

 

 

MIPS(Milloins of Instructions Per Second)란 CPU vendor들이 마케팅 자료에서 성능 지표로 자주 사용하는 값이다. 이해하기 쉽고, 측정하기 쉽지만 성능을 제대로 반영하지 못한다. 위의 공식에서 알다시피, CPU performance factor 중에서 instruction count가 포함되어 있지 않기 때문이다. 

MFLOPS(Millions of Floating Point Operations Per Second)란 MIPS와 비슷하게 정의된 것으로, floating point의 성능 지표로서 사용된다. MIPS와 같은 이유로 성능을 제대로 반영하지 못한다. 

 

Measurement Computer A Computer B
Instruction count 10 billion 8 billion
Clock rate 4 Ghz 4 Ghz
CPI 1.0 1.1

 

위의 표에서 MIPS 값이 더 높은 것은 A이지만 실제로 성능이 더 좋은 것은 B다. (42쪽 예제도 풀어보자.)

 

(6) Amdahl's law

 

 

디자인 원칙은 common case를 빠르게 만드는 것이다. 어떤 improvement에 의한 성능 향상은 그 improvement에 영향을 받는 execution time의 퍼센티지에 의해 제한된다는 것을 알려준다. 

예를 들어, [1] 어떤 machine에서 주어진 프로그램의 execution time이 100 seconds로, 그 중에서 multiply operation들이 80 seconds를 차지한다고 가정하자. 기계의 multiply speed를 몇 배 향상시키면 프로그램의 수행이 4배 빨라질까? 80s/n + 20s = 25s, n = 16이라는 답이 나온다. [2] 프로그램의 수행 속도가 5배 빨라지려면 n의 값은 무엇이 될까? 존재할까?

 

(7) Workload

컴퓨터 성능을 측정하기 위해, 즉 execution time을 측정하기 위해서 컴퓨터에서 돌리는(running) 프로그램들의 집합을 의미한다. Workload로 사용되는 프로그램엔 크게 두 가지가 있다. [1] Real applications는 전형적인 real application program들을 의미한다. 컴파일러, 에디터, 그래픽 등이 이에 해당되며, 성능을 가장 정확하게 측정할 수 있다. 단점은 사용자가 이것을 사용한 성능을 측정하기 어렵고, 너무 방대한 application이 존재한다는 것이다. [2] Benchmarks는 성능 측정을 위해 개발되거나 특별히 선택된 프로그램들을 말한다. [1]보다는 성능 측정이 덜 정확하지만, 객관적인 측정치가 제공된다. 다양한 종류가 있으며 대표적으로 SPEC benchmark가 있다. 

-> SPEC과 EEMBC란? SPEC benchmark란 SPEC에서 개발한 벤치마크로, 현재 PC와 workstation의 성능 측정을 위해 가장 널리 사용된다. 처음에는 CPU-intensive였으나, 현재는 10여 종류의 적합한 것을 제공한다. EEMBC benchmark란 EEMBC에서 개발한 임베디드 시스템의 성능 측정 용도다. 

 

 

5. Networks, technology and manufactoring

 

(1) Networked Computers

네트워크를 통한 컴퓨터의 연결이 보편화되었다. 네트워크 컴퓨터는 커뮤니케이션, 자원 공유(IO devices), nonlocal access 등에 장점을 가진다. LAN(Local Area Network)은 Switches를 사용하여 연결되는 한정된 지역 안의 네트워크를 말한다. 보통의 경우 건물 정도의 지역을 말하며, Ethernet을 사용한다. WAN(Wide Area Network)란 인터넷의 척추 역할이며, 지역적인 제한이 없다. 보통 optical fibers를 사용한다. Wireless network는 Wifi를 말하며, CMOW RF로 인해 보편화되었다. 

 

(2) 컴퓨터의 발전 - 대충 알고 넘어가자. 

CPU 성능의 발전은 기술의 진보, 컴퓨터 설계의 발명에 기인한다. 또한 컴퓨터 성능 발전의 많은 부분은 technology(반도체 기술)의 발전에 기인한다. 기술의 발전에 따라 DRAM chip 1개당 저장 용량이 기하급수적으로 향상되었다. Moore's law에 따르면, 제조 비용이 가장 낮은 집적 회로에 장착할 수 있는 마이크로 부품의 수는 매년 2배씩 증가했다. 

 

재미로 보는 chip 생성 과정 ~~

 

 

6. Power wall and multiprocessors

 

(1) Power Wall

 

 

power limit. Clock frequency가 300개 증가하면서, power 소모는 30배만 증가한다. (전압이 5V에서 1V로 감소했기 때문이다.) 이젠 power 한계에 도달. 그래서 Multicore microprocessors로 방향을 바꾸자. 

 

(2) Multicore microprocessors

다수의 processor들을 하나의 칩에 가지고 있는 멀티 프로세서를 의미한다. 이 경우, 프로세서 대신 core라는 용어를 보통 사용한다. 이들은 Explicit parallel programming을 요구한다. 즉, 개발자가 직접 프로세서 간의 parallelism을 활용해야 한다. Scheduling subtasks, Load balancing, Reducing communication and synchronization overhead와 같은 키워드들을 체크하자. 

 

 

 

 

 

 

 

 

 

 

728x90
반응형