컴퓨터 구조

[컴퓨터 구조] 컴퓨터 구조 기초

kidmillionaire1998 2022. 8. 21. 22:10

숭실대학교 하석재 교수님의 2022-1학기 컴퓨터 구조 강의를 정리 및 재구성했다.

-대표적 컴퓨터 구조

  • 노이만 아키텍쳐

- 메모리에 적재된 프로그램이 명령어 / 데이터가 혼재되는 형태
-반드시 시작주소 부터 프로그램이 실행되어야 한다.
-명령어와 데이터가 위치에 따라 의미가 달라짐

  • 하버드 아키텍쳐

- 프로그램 메모리와 데이터 메모리가 분리되어 저장됨
- 메모리 주소에 따라 같은 데이터가 의미가 달라지지 않는다.
- 성능면에서 장점을 가지지만 비교적 구조가 복잡

  • 현재의 컴퓨터 구조

- 메모리는 노이만 구조, 캐시는 하버드 구조를 채택함
-캐시는 명령어 캐시 + 데이터 캐시로 분리해서 관리

-컴퓨터 언어

  • 저수준 언어

- Mnemonic(기계어)
-0101 1010 001
- Assembly (어셈블리)
- MOV EAX, 1 (OPCODE (MOV) / Operand(EAX , 1))

  • 고수준 언어

- Java / Python / Javascript
- H/W에 대한 접근은 거의 안됨

  • 중수준 언어

- C

-하드웨어에 대한 접근을 어느정도 허용 / 성능은 좋지만 해킹과 같은 위험성으로 인한 안정성은 낮다.
- 현재 Go가 명맥을 이어나가고 있으며, Go는 클라우드나 블록체인에서 많이 사용된다.

cf) py-python / C- python

-SW의 최적화

-클럭 스피드/ 워드 / 사이클

1. 클럭 스피드

- CPU의 동작속도를 나타내는 척도
- 물리적인 H/W의 발진자외 연관
-Ex) 4.9GHz AMD Ryzen 5950x (1초에 49억번 사이클을 발생시킴)
-cf) 1GHz 1초에 10억번의 사이클

2. 워드

- CPU가 한 번에 처리할 수 있는 데이터 처리량

-ex) 8/16/32/64bit...

3. 실제 처리량

- 워드 x 사이클 수 (클럭스피드)

-bps/ Mbps / Gpbs
-MB/s, GB/s...

4. 기타
-실제로는 주어진 클럭스피드보다 많이 실행하기 위한 다양한 구조를 가진다.

-한 번에 여러 개의 명령어를 동시에 실행시키기 위한 구조 내장

-멀티 코어 CPU / 파이프라인 / 슈퍼 스케일러

-CISC vs RISC

-CISC(Complex Instruction Set Computer)

-명령어마다 실행하는 시간이 다르다.
-간단한 명령어는 1사이클에서 복잡한 명령어는 4~8사이클이 필요하다.
- 대표적인 아키텍쳐 : X86 / X86-64

-RISC(Reduced Instruction Set Computer)

-명령어마다 실행하는 시간이 같다.
-복잡한 연산은 조합해서 가능하도록 한다.
-대표적인 아키텍쳐 : MIPS / ARM / RISC -V /...

-현재의 CPU 주류 트렌드

-인텔도 겉만 CISC지만 실제로 내부 구조는 거의 RISC구조이다.

-프로그래밍 vs 마이크로 프로그래밍

-프로그래밍

-일반적인 의미의 프로그래밍을 뜻하며, 고수준 ~ 저수준 언어로 코드가 작성된다.

- 마이크로프로그래밍

- CPU안에 기계어를 상대적으로 쉽게 추가할 수 있도록 이용하는 방식이다.
- 어셈블리 코드를 실행하도록 컴퓨터 구조의 각 세부노드(CPU/레지스터 등)을 조정한다.
-Ex) ADD EAX , 10 : ALU를 Adder 모드로 만들고 첫 번째 Operand를 EAX로 하고 두 번째 Operand에 10을 넣어 결과를 다시 EAX로 저장하라.
- 주로 펌웨어/ 바이오스 / CPU안에 저장되어있고, 마이크로프로그래밍 코드는 저작권 보호대상이 된다.

-S/W와 H/W의 관계

- 운영체제는 시스템 S/W로 불린다.