0.4 메모리, CPU의 기본구조

ARA JO·2022년 6월 23일
0

0.4 컴퓨터는 왜 2진수를 사용힐까?

뛰어난 프로그래머? 사람과 컴퓨터의 생각차이를 잘 이해하는 것.

  • 열전자방출
    전자가 음극에서 양극으로 흐르는 것을 조절할 수 있는 것이 진공관
    -> On / Off 가지 상태 -> 2진수

여러개의 진공관을 연결해서 복잡한 계싼을 할 수 있다.
https://www.youtube.com/watch?v=nA_tgIygvNo&t=4s

트랜지스터

  • 반도체를 이용한 트랜지스터! -> 실리콘 -> 실리콘 밸리
  • 작고, 안전(고장이 덜난다)

트랜지스터

  • c/e/b

트랜지스터

0.5 현대적 컴퓨터의 기본 구조

  • 앨런튜링
  • 폰노이만 : 폰노이만 구조-> 내장형 프로그램 방식의 컴퓨터

내장형 프로그램 방식의 컴퓨터

프로그램이 메모리에 들어가고, CPU(제어+산술/논리연산)
연산 + 기억이 분리되었다.

cpu / memory / IO
----------system bus----------------
control bus
address bus
data bus
----------system bus----------------
버스들을 거쳐서 다음 버스로 간다.
Example of asinglesystem computer bus

  • 이진수를 싣고 다니는 bus

0.6 컴퓨터 메모리의 기본 구조

  • CPU <----- 캐시메모리 -----> 메모리

캐시메모리

  • 자주 갖고 오는 것은 캐쉬 메모리에 넣어두고 CPU가 거기서 가져온다

순차 / 임의 접근

순차 접근(sequential Access) : 자기테이프

-> 모든 집을 다뒤져!

자기테이프

임의 접근(Random Access)

  • 주소를 알고 있어 -> 효율적
  • 임의 접근을 위해 현대 메모리 구조가 생김
    -> RAM
  • 셀마다 1bit (0/1)이 저장된다. 여러개가 저장된다.

How a cpu works - [https://www.youtube.com/watch?v=cNN_tTXABUA]

  • address bus: 임의 접근을 위해 주소가 왔다갔다. -> 이놈 때문에 포인터가 있다. -> 빠르다.
  • data bus: 실제 데이터가 왔다갔다 -> 포인터를 접근하지 않는 언어는 프로그래머가 이것만 신경쓰면 된다.
  • controll bus : 데이터를 보낼건지 받을건지 전달.

0.7 CPU의 기본구조

프로그램이 시작되는 과정

  1. 내가 만든 프로그램은 보조기억장치에 저장되어 있다.
  2. 보조기억장치에서 메모리로 프로그램을 올린다.
    • 할 일을 나열해주는 것.
  3. CPU는 메모리에 나열된 할 일들을 수행한다.

언어

  • 기계어: 100110 0000001010 ...
  • 어셈블리 언어 (니모닉) : [숫자]는 메모리 주소를 십진수로 적음
    - LOAD [10]
    • ADD [11]
    • STORE [12]
  • 고수준 언어
    - a = 3
    • b = 4
    • c = a + b

메모리에 공간을 잡고 3을 올린다. (실제로는 2진수)
4를 올린다.
3과 4를 연산하여 c 메모리에 올린다.

CPU 명령어 기본 집합 (어셈블리 언어)

  1. ADD : 숫자 두 개를 더한다

  2. COMPARE : 숫자들끼리 비교한다.

  3. IN : 입력장치(키보드)로부터 정보를 입력받는다.

  4. OUT: 출력장치로 정보를 출력한다.

  5. JUMP: 지정된 메모리 주소로 점프한다.

  6. JUMP IF: 조건에 따라 점프한다.

  7. LOAD: 메모리에서 CPU로 정보를 가져온다.

  8. STORE: 메모리에 정보를 저장한다.

CPU의 구성요소들

  1. 제어장치 - 실제 일을 할 때 관리
  2. 산술논리장치(ALU - Arithmetic Logic Unit) - 계산
  3. 여러가지 레지스터들 (등록부?) - 산술 논리장치의 책상위?
    • 주소 레지스터: 읽거나 쓸 메모리 주소 저장 => 임의접근
    • 프로그램 카운터: 다음 명령어의 메모리 주소 저장
    • 데이터 레지스터: 메모리에서 읽어온 데이터 저장
    • 명령어 레지스터: 메모리에서 읽어온 명령어 저장
    • 머큐뮬레이터: 연산에 사용되는 데이터 저장.

(저장소..) -> [메모리] - [캐시메모리] - [레지스터(in CPU)]

but, 구조적으로는 메모리와 매우 다르다고 한다.
'저장'이라는 의미에 집중하기 보다는 구분해서 생각하는 것이 좋다.

profile
Sin prisa pero sin pausa (서두르지 말되, 멈추지도 말라)

0개의 댓글