컴퓨터구조

[컴퓨터 구조] 제 1장. 컴퓨터 추상화 및 기술

촙발자 2023. 3. 16. 17:51

Classes of Computers

- Personal computers (PCs)

일반적인 목적과 다양한 소프트웨어

비용과 성능의 tradeoff을 필요로함.

 

- Servers

보통 네트워크를 통해 연결됨.

높은 용량, 높은 성능, 그리고 높은 신뢰성

작은 것부터 빌딩 크기까지의 사이즈

  1. Low-end : 작은 비즈니스나 웹서비스
  2. High-end : 100~1000개의 프로세서와 테라바이트의 메모리 페타바이트의 저장소를 가지고 있는 슈퍼컴퓨터나 데이터센터

-Embedded computers

다른 장치 내부의 컴퓨터

 


Post-PC Era

현재 PC는 personal mobile devices(PMDs)로 대체되고 있습니다.

기존의 서버에서 cloud computing으로 넘어가고 있습니다.

Post-PCs 종류) 웨어러블 , smart farming, automobile, robotics, 3D printing 등등..

 

 


 

Electronic Control Unit (ECU)

ECU는 차량의 전기 시스템을 제어하는 자동차 전자 장치에 내장된 시스템(embedded system)입니다.

즉 ECU가 차에 내장된 컴퓨터의 조종을 도와줌

→ ㅋㅋ 이게 기출이라니

Eight Great Ideas in Computer Architecture

-  Design for Moore’s Law

반도체칩에 집적할 수 있는 트랜지스터 수가 18~24개월마다 두 배씩 증가한다는 가설

 

 

-  간단한 설계를 위해 abstraction(추상화)을 사용해라

다양한 레벨들에서 디자인을 특성화하기 위한 추상화

 

 

-  자주 사용하는 경우를 빠르게 만들어라

희귀한 케이스를 최적화하는 것보다 더 나은 성능향상

 

 

- parallelism(병렬화)를 통한 performance

operations를 병렬적으로 처리함으로써 더 나은 성능을 얻는다.

 

 

-pipelining을 통한 performance

병렬화의 특정한 패턴

 

 

-prediction을 통한 performance

기다리는 것 보다 평균을 추측해서 작업을 시작하는것이 더 빠르다. (4장에 prediction에 관한 내용이 나옵니다.)

 

 

-Hierarchy of memories

주소 사이즈와 속도에 따른 메모리의 계층

 

 

-Dependability via redundancy(여유분을 통한 신용도 개선)

중복 작업을 통한 컴퓨터의 신뢰성

 

 


Below Your Program

소프트웨어의 단계들은 계층구조에 정렬되어있습니다.

  • Application software (C/C++, java)는 high-level 언어로 쓰여져있습니다.
  • System software는 hardware와 application software사이에 있습니다.
  1. 사용자 프로그램과 하드웨어 간의 Operating system(운영 체제 인터페이스)
    • 기본적인 input/output 연산을 수행합니다.
    • 메모리와 저장공간을 할당합니다. (malloc)
    • resource sharing and task scheduling
    • e.x) Linux, Windows, iOS
  2. Compiler는 고수준언어들을 instruction으로 변환하여 줍니다.
  • hardware는 processor, memory, I/O controller, etc를 포함하고 있습니다.

 


High-Level Language to Language of Hardware

  • HIgh-level language는 ‘problem domain’에 가까운 추상화 단계입니다.
    1. 생산성과 portability(이식성?)을 제공함. (e.x, C++)
    2. Compilers는 프로그램을 instruction으로 변환합니다.
  • Assembly language는 machine instruction들과 대응 되는 컴퓨터 프로그래밍의 저급언어 입니다.
    1. Assemblers는 instruction들을 이진수로 바꾸어줍니다.
  • Machine language는 machine instructions의 하드웨어 표현입니다.
    1. 2진수로 표현되어집니다.
    2. instruction과 data가 인코딩 되어있습니다.

 

 


Organization of a Computer

컴퓨터의 기본적인 5가지 요소는 input, output, memory, datapath, control입니다.

  • Processor : datapath(연산을 수행) + control → 메모리와만 통신

이거 기출

  • 프로세서는 메모리로부터 instruction과 data를 가져옵니다.
  • Input은 메모리에 데이터를 작성합니다.
  • Output은 메모리로부터 data를 읽어옵니다.
  • Control은 datapath, memory, input, output의 작동을 결정하는 신호들을 보냅니다.

컴퓨터의 모든 종류들은 똑같은 component를 가지고 있습니다.

(ex) 데스크탑, 서버, 임베디드

 


Opening the Box

Memory는 프로그램들이 실행중일 때에 데이터가 작동중일 때 데이터들이 저장되어지는 곳입니다.

메모리는 프로그램의 데이터와 instruction들이 포함된 DRAM(dynamic random access memory)으로 만들어진 칩들입니다.

  • Cache memory(캐시 메모리)는 DRAM의 버퍼 역할을 하는 작고, 빠른 메모리들로 이루어져 있습니다.
    • Cache는 SRAM(static random access memory)을 사용하여 만들어졌습니다.
    • → SRAM은 DRAM보다 더 작고 빠르지만 비쌉니다.
  • Abstraction은 lower-level (hierarchy에서 낮은 레벨 즉 프로세서와 멈)의 detail을 숨김으로써 복잡함을 다룹니다.

 


A Safe Place for Data

  • Volatile memory(휘발성 메모리)는 전원이 꺼질 때 데이터와 인스트럭션들을 잃어버립니다.
    • Main memory 또는 primary memory
    • 보통 작고 빠릅니다
    • ex) DRAM, SRAM
    • Secondory 메모리
    • 메인 메모리보다 큰 사이즈와 느린 속도
    • ex) magnetic (hard)disk, flash memory, optical disk(CD,DVD), SSDNonvolatile memory(비휘발성)는 전원이 꺼질때 데이터와 프로그램들이 유지됩니다.

 


Communicating with Other Computers

  • 네트워크는 모든 컴퓨터들을 상호연결 시켜주고, 네트워크에 접속된 컴퓨터들은 몇가지 주요 장점들을 가집니다.
    • Communication: 빠른속도로 컴퓨터들끼리 빠른속도로 정보를 교환합니다.
    • Resource sharing: 네트워크 상에서 컴퓨터들이 I/O 장치들을 공유합니다.
    • Nonlocal access(원격접근): 사용자들은 그들이 사용할 컴퓨터와 가까이 있을 필요가 없습니다.
  • Local area network (LAN)은 위치적으로 한정된 공간 내에서 데이터를 옮기도록 설계 되었습니다. (한 건물) → Ethernet(이더넷)
  • Wide area network (WAN)은 수백km 이상(대륙 단위)로 확장된 네트워크입니다. → Internet
  • Wireless network : 와이파이, 블루투스

Response Time and Throughput

  • 개인용 컴퓨터 사용자는 response time(응답시간)을 줄이는 것에 관심이 있습니다.
    • 일의 시작과 끝 사이의 시간을 execution time(실행 시간)이라 합니다.
  • 데이터센터 관리자는 through(bandwidth)를 늘리는 것을 신경씁니다.
    • through(bandwidth) → 한 번에 얼마나 처리할 수 있는가 (대역폭)
    • 주어진 시간내에서 완료할 수 있는 작업의 양

 

프로세서를 더 빠른것으로 교환 → response time과 throughput 둘 다 향상

 

프로세서를 추가 → response time은 그대로이고 throughput만 향상

 

우리의 관심사는 response time이며 컴퓨터 X의 성능은 아래로 정의되어집니다.

 

 


Measuring Performance

  • Time은 컴퓨터 성능의 측정입니다.
    • Time: 가장 기본적인 유닛
  • 시간의 가장 간단한 정의는 wall clock time, response time, elapsed time이라고 불립니다.
    • 이 용어들은 디스크/메모리 accesses, input/output (I/O)activities, 운영체제의 모든 것들을 포함하여 한 작업을 끝내는데 필요한 전체 시간을 의미합니다.
  • CPU execution time(or CPU time)은 CPU가 일을 위해 수행한 시간입니다.
    • 이것은 I/O 그리고 다른 프로그램들에 의해 사용된 시간을 포함하지 않습니다!!
    • CPU time은 user CPU timesystem CPU time으로 나뉘어집니다.

 


CPU Clocking

→ 1GHz, 2GHz, ….

clock cycle은 프로그램을 실행하기 위해 필요한 clock의 개수이고,

clock time은 clock cycle의 시간입니다.

  • 모든 컴퓨터들은 하드웨어에서 작업이 수행될때를 결정하는 clock을 사용하여 만들어집니다.
    • clock이 없으면 동작x
    • 이런 분리된 시간 간격들은 clock cycles(or ticks, clock ticks, clock periods, clocks, cycles)라고 불립니다.

  • 개발자들은 clock period의 길이를 완전한 clock cycle을 위한 시간과 clock rate (frequency)라고 부른다.
    • Clock period: clock cycle의 기간 (ex, 250ps)
    • Clock rate (or clock frequency): 초당 cycles (ex, 4 GHz)

 


CPU Performance

  • 하드웨어 디자이너가 성능을 향상시키는 방법
    • clock cycles의 수를 줄입니다.
    • clock cycle의 길이를 줄입니다. (i.e., clock rate를 늘리기)
  • 디자이너는 clock cycles와 clock rate를 잘 조율해야합니다.
  • CPU execution time은 아래와 같습니다.

  • 하드웨어 디자이너들은 아래의 방법으로 성능을 향상 시킬 수 있습니다.
    • 프로그램에 요구되는 clock cycles의 수를 줄입니다.
    • clock cycle의 길이를 줄입니다.
  • 설계자는 clock cycle의 수와 clock rate를 적절히 조율해야합니다.

 

 


Instruction Performance

  • 프로그램의 실행 시간은 number of Instruction에 달려있습니다.

  • Instruction count는 Program, ISA, 그리고 compiler에 의해 결정되어집니다.
  • CPI (Clock cycle per instruction)은 프로그램을 실행하기 위한 Instruction들의 평균 수이다.
    • CPU hardware에 의해 결정됨.
    • 다른 instruction들은 각기 다른 clock cycles을 가지고 있습니다.

 


Performance Summary

CPU Time은 (프로그램의 명령어 수) * (명령어의 사이클 횟수) * (그것을 수행하는 clock rate)의 값으로 나타납니다.

 

 


Amdahl’s Law

▪ Improving an aspect of a computer and expecting a proportional improvement in overall performance

  • 컴퓨터의 전체적인 성능을 끌어올리는 것에 관한 법칙이 있습니다.

프로그램을 100초 동안 실행할 때, 80초를 곱셈연산에 사용한다고 가정해봅시다.

이때 곱셈연산의 성능을 5배 향상셔봅시다.

여기서 80/n이 0이 나올 수는 없으므로 5배 이상 향상시키는 방법은 없다는 것을 알 수 있습니다.

  • 그러므로, 전체적인 성능을 향상시키기 위해선 특정 부분이 아닌 공통적인 case를 빠르게 하는 것이 좋습니다.

 

 


MIPS as a Performance Metric

  • MIPS는 컴퓨터의 성능을 측정하기 위하여 사용됩니다.

컴퓨터가 빠를수록 MIPS의 값이 큽니다!

 

 

  • MIPS는 아래 두개를 의미하는 것은 아닙니다.
    • differences in ISAs between computers (같은 컴퓨터에서도 어떤 프로그램을 사용하느냐에 따라 MIPS의 값은 달라집니다.)
    • differences in complexity between insturctions

 

 

p.s. 노션에서 티스토리로 옮기기 생각보다 귀찮네요...... 꾸며놓은 것도 다 깨지고........