CS 지식/[codeit] 컴퓨터 아키텍처 (완)

[ codeit ] 컴퓨터 아키텍처 (2)

web_seul 2021. 9. 9. 09:31
반응형

 CPU (Central Processing Unit) 

1강. 프로그램을 실행하는 칩, CPU

컴파일러, 인터프리터 : 고수준의 언어를 컴퓨터 언어로 바꿔줌

CPU : 머신코드를 실행하는 곳, 중앙처리장치, 컴퓨터 성능에 영향

instruction : cpu 동작의 최소단위 (ex. 8자리의 0, 1 조합)

 

2강. 하나의 칩에 여러기능 넣기

opcode(operation code) : 기능을 알려주는 코드, + - x /, 컴퓨터는 6자리 내외의 opcode 를 가짐,

                                  하나의 칩에 동시 여러기능을 넣기위한 신호

ALU(Arithmetic logit unit) : 수학연산기능을 할 수 있는 칩

instruction : 100101 0110110010

opcode : 100101

 

3강. CPU와 저장장치 I

instrunction -> CPU -> 정해진 동작수행

CPU의 instruction : 저장장치 관련

 

CPU 내부 : 하드디스크, 램

CPU 외부 : 레지스터(가장빠른 저장장치)

 

4강. CPU와 저장장치 II

CPU는 하드디스크의 내용을 램에 부분 저장해두고 빠르게 가져다 씀

동시의 다른 작업을 위해 최소한의 register사용 -> ram 저장(전원on) -> 하드디스크 저장(전원 off)

 

5강. 머신코드 실행하기

프로그램의 데이터 -> 램

머신코드의 명령에 따라

 

6강. 컴퓨터의 추상화

프로그래밍의 추상화

print(3 + 7) max(list) -> 컴파일러 -> 00001010 00011011 10000001 01001110

 

7강. 어셈블리 언어

: 읽을수 있는 머신코드 (Symbolic machine code)

머신코드 <->어셈블리언어 - 고수준 언어

           어셈블러

 

8강. 32비트 시스템과 64비트 시스템

32bit, 64bit : instruction의 자리수

 

9강. CPU퀴즈

 

 컴퓨터의 성능 

1강. 컴퓨터의 속도

3.6GHz : 1초에 36억번 반복 : 숫자가 클수록 CPU가 빠른템포로 움직임

   억 / 1초에 몇번 반복하는지

부품A <-> 부품B 서로 전달하는 신호한번 : cycle = clock (clock speed / clock rate)

: 1초에 12억번의 숫자연산 가능

 

MIPS 시스템(CPU 설계방식 중 하나) LOAD:5cycle / STORE:4cycle

 

2강. CPU의 성능지표

Clock Speed(Clock Rate) : 1초에 실행할 수 이쓴 사이클의 개수, 컴퓨터의 성능지표 중 하나

CPI(Cycles per instruction) : 한 instruction이 평균적으로 몇 사이클만에 완료되는지 나타내는 지표, 낮을수록 좋음

  ex) LOAD(불러오기) : 5사이클 , STORE(저장하기) : 3사이클 , ADD(더하기) : 4사이클 -> 평균 4사이클

IPC(Instructions per cycle) : CPI의 반대 (4CPI = 1/4 IPC), 성능표현, 높을 수록 좋음

IPS(Instructions per second) : 1초에 실행할 수 있는 instruction의 개수 (clock speed * IPC)

멀티코어(Multi-Core) : 두개의 CPU가 따로 동작하는 방식, 1.5배의 속도향상

- 클럭이 얼마나 빠른지(Clock Speed)

- 한 클럭이 얼마나 많은 일을 할 수 있는지(CPI, IPC, IPS)

- 몇 개의 코어가 있느냐(멀티코어)

 

3강. 프로그램을 빠르게 실행하는 두가지 방법

1. 프로그램에 얼마나 많은 instruction이 있는지 

2. instruction을 실행하는 속도가 얼마나 빠른지

 

4강. 성능향상 I : Instruction 개수 줄이기

실행코드(머신코드)의 길이를 짧게 ( Instruction의 개수 )

- 언어 python < C : 어셈블리 언어일수록 빠름

- 알고리즘 : 문제를 해결하기위한 절차

- 컴파일러 : 고수준의 언어를 더 낮은 수준의 언어로 바꾸는 역할

 

5강. 성능향상 II : Instruction 실행 속도 올리기

1. 파이프라인 : 동시에 진행

 

2. 예측

CPU - Cache(더 가깝고 빠른 저장공간) - RAM(임시 저장공간) - Hard disk(최종 저장공간)

 

3. 그 외 원칙들

Make the common case fase : 자주일어나는 일을 빠르게하라

 

6강. 더 작게, 더 빠르게

"반도체의 밀도는 2년마다 약 2배씩 증가할 것입니다" - 고든무어(Gordon Moore) : intel 공동설립자

 

반도체의 밀도 = 반도체의 집적도(정해진 크기에 얼마나 많은 회로를 넣을 수 있는지)

무작정 집적도만 높이는게 좋지 않다 (자기장이 다른 선에도 영향을 미침)

 

7강. 컴퓨터의 성능 퀴즈

 

 토픽 정리하기 

1강. 토픽 정리하기

이진법, 논리연산, 간단한 회로설계, CPU, 컴퓨터의 성능

ex) 20세 미만의 유저에게 할인된 금액 적용

if user.age < 20:
   user.payment.discount(discountRate)
▽  
//머신코드
0101 1110 1110 1111 1101 1111 1011 0011
1110 1111 0110 0011 1100 0001 0001 1110
1110 1011 1000 0100 0110 0100 0011 0001
1001 1000 0011 0000 0000 0000 0000 0101

머신코드의 최소단위 instruction , CPU의 한 cycle

 

1. 이진법은 0과 1로만 이루어진 숫자체계, 0과 1은 컴퓨터 연산에서 가장 기본이 되는 최소단위

2. 논리연산인 AND, OR, NOT 를 사용하면 이진수를 조합해서 특정 결과가 나오도록 할 수 있음, ex. AND와 XOR을 사용하면 한 자릿수 덧셈을 할 수 있음

3. 1은 전기를 흘려주고, 0은 전기를 차단하는 방식으로 회로를 만들어 이진수를 전기 신호로 바꿔 전달 가능, 실제 컴퓨터의 모든 회로에서 전선에 전기흐름의 여부를 통해 0과 1을 전달하고 작업이 이루어짐

4. 회로를 모아 더 큰 회로를 만들 수 있음, ex. 한자리 덧셈회로 4개를 모아서 네자리 덧셈 회로를 만들 수 있음, 덧셈 회로와 뺄셈 회로를 모아서 수학 기능 회로를 만들 수 있음

5. 컴퓨터의 두뇌인 CPU도 여러 회로를 모아서 만들어짐, CPU는 머신코드를 분석해 사전에 정의된 동작을 실행, 보통 머신코드는 원하는 숫자 연산, 메모리나 레지스터에 데이터를 저장하고 가져오기, 다른 위치의 머신 코드 실행하기 등의 동작을 함

6. 우리가 작성한 모든 프로그램은 컴파일러인터프리터를 통해 머신코드로 변경되어 CPU에 전달

7. 프로그램의 실행 속도는 얼마나 많은 머신 코드로 바뀌는지, 하나의 머신코드가 얼마나 빨리 실행되는지에 따라 달라짐

반응형