본문 바로가기
내일배움캠프_게임서버(202410)/분반 수업 스텐다드

컴퓨터 구조

by GREEN나무 2025. 1. 8.
728x90

컴퓨터 구조

컴퓨터 구조를 학습해야 하는 이유

컴퓨터의 구조(하드웨어)를 학습해야 하는 이유

개발자로서는 프로그램이 어떤 환경에서 어떻게 작동하는지 이해하고, 최적의 컴퓨터 환경( 성능, 용량, 비용 등 )을 스스로 판단할 수 있어야 합니다.

 

컴퓨터의 네 가지 핵심 부품

1) 중앙 처리 장치(Central Processing Unit, 이하 CPU),

2) 주기억 장치(main memory, 이하 메모리),

3) 보조 기억 장치(secondary storage),

4) 입출력 장치(input/output devices, 이하 I/O 장치)

🔹 가장 큰 사각형은 메인보드입니다.

🔹 메인보드 안에 시스템 버스(양방향 수직 화살표)가 있습니다.

🔹 CPU 내부에는 ALU(산술 논리 연산 장치), 제어 장치와 여러 레지스터가 있습니다. CPU는 메인보드 내 시스템 버스와 연결되어 있습니다.

🔹 메모리는 메인보드 내 시스템 버스와 연결되어 있습니다.

🔹 보조 기억 장치는 메인보드 내 시스템 버스와 연결되어 있습니다.

🔹 모니터, 키보드, 마우스 등은 메인보드 내 시스템 버스와 연결되어 있습니다. 이들을 입출력 장치라고 부릅니다.

 

컴퓨터의 구조는 CPU와 메모리를 중점으로 학습하세요

 

메모리

메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품입니다.

메모리에는 저장된 값에 빠르고 효율적으로 접근하기 위해 주소(address)라는 개념이 사용됩니다.

명령어와 데이터는 모두 0과 1로 표현되기 때문에 겉보기에는 마치 0과 1로 이루어진 데이터를 저장한 것처럼 보입니다

프로그램이 실행되기 위해서는 반드시 메모리에 저장되어 있어야 합니다.

메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장합니다.

메모리에 저장된 값의 위치는 주소 (address)로 알 수 있습니다.

cpu

CPU는 컴퓨터의 두뇌입니다.

CPU는 메모리에 저장된 명령어를 읽어들이고, 읽어들인 명령어를 해석하고, 실행하는 부품입니다.

CPU 내부 구성 요소 중 가장 중요한 세 가지는 산술 논리 연산 장치(ALU: Arithmetic Logic Unit), 레지스터(register), 제어 장치(Control Unit)입니다.

 

https://ashen99.tistory.com/518

 

cpu 조사

[주제]1. CPU란?CPU의 개념과 세부 장치들에 대한 설명이 포함되면 좋을 것 같아요 CPU(Central Processing Unit, 중앙처리장치 )CPU는 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행 · 처리하는 

strobus.store

 

ALU는 계산만을 위해 존재하는 부품.

   컴퓨터 내부에서 수행되는 대부분의 계산은 ALU가 도맡아 수행합니다.

레지스터는 CPU 내부의 작은 임시 저장 장치.

   프로그램을 실행하는 데 필요한 값들을 임시로 저장합니다.

 

CPU 안에는 여러 개의 레지스터가 존재하고 각기 다른 이름과 역할을 가지고 있습니다.

 

동작 예시

 

1번지부터 2번지까지 명령어가 저장되어 있습니다.

제어 장치는 1번지에 저장된 명령어를 읽어들이기 위해 메모리에 '메모리 읽기' 제어 신호를 보냅니다

 

1. 메모리는 1번지에 저장된 명령어를 CPU에 건네주고, 이 명령어는 레지스터에 저장됩니다.

2. 제어 장치는 읽어들인 명령어를 해석한 뒤 3번지와 4번지에 저장된 데이터가 필요하다고 판단합니다.

3. 제어 장치는 3번지와 4번지에 저장된 데이터를 읽어들이기 위해 메모리에 '메모리 읽기' 제어 신호를 보냅니다.

 

1. 메모리는 3번지와 4번지에 저장된 데이터를 CPU에 건네주고, 이 데이터들은 서로 다른 레지스터에 저장됩니다.

2. ALU는 읽어들인 데이터로 연산을 수행합니다. 계산의 결과 값은 레지스터에 저장됩니다. 계산이 끝났다면 첫 번째 명령어의 실행은 끝납니다.

제어 장치는 2번지에 저장된 다음 명령어를 읽어들이기 위해 메모리에 '메모리 읽기' 제어 신호를 보냅니다.

 

메모리는 2번지에 저장된 명령어를 CPU에 건네주고, 이 명령어는 레지스터에 저장됩니다. 제어 장치는 이 명령어를 해석한 뒤 메모리에 계산 결과를 저장해야 한다고 판단합니다.

 

제어 장치는 계산 결과를 저장하기 위해 메모리에 '메모리 쓰기' 제어 신호와 함께 계산 결과인 220을 보냅니다. 메모리가 계산 결과를 저장하면 두 번째 명령어의 실행도 끝납니다.

 

보조 기억 장치

메모리가 현재 실행되는 프로그램을 저장한다면, 보조 기억 장치는 보관할 프로그램을 저장한다

메모리의 단점 : 가격이 비싸고 저장 용량이 적고, 전원이 꺼지면 저장된 내용을 잃는다.

보조 기억 장치는 메모리를 보조하기 위한 저장 장치.

  ex)하드 디스크, SSD, USB 메모리, DVD, CD-ROM등

 

입출력 장치

입출력 장치 :  컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치

 ex) 마이크, 스피커, 프린터, 마우스, 키보드

 

실제로 보조 기억 장치와 입출력 장치를 '컴퓨터 주변에 붙어있는 장치'라는 의미에서 주변 장치(peripheral device)라 통칭하기도 합니다.

다만 보조 기억 장치는 모니터, 마우스, 키보드와 같은 일반적인 입출력 장치에 비해 메모리를 보조한다는 특별한 기능을 수행하는 입출력 장치입니다.

 

 

 

_______________________________________

컴퓨터 구조 발제

 

https://velog.io/@nuketuna/TIL-20250106-TIL-CA-Hardware-1-Processor

 

Control 유닛과 Datapath 유닛을 합쳐 Processor 라고 한다.

Datapath는 데이터를 세이브/로드하는 역할 및 연산 수행을 담당하고, Control 유닛은 컴퓨터 내부의 명령을 해석 및 실행하는 역할로 명령에에 따라 데이터패스, 메모리, 입출력의 동작을 결정하는 신호를 보낸다.

Input 유닛은 Memory에 데이터를 쓰고, Output 유닛은 Memory 에서 데이터를 읽는다.

 

2. CPU (Central Processing Unit)

CPU 는 중앙 처리 장치로, 메모리에 저장된 명령어를 읽어들이고, 읽어들인 명령어에 대한 interpret implement를 담당한다.

이미지 : https://velog.velcdn.com/images/nuketuna/post/243e11d7-b401-4c4e-9022-081cb445ec2e/image.png

 

ALU (Arithmetic Logic Unit)

ALU는 산술 연산 (덧셈, 뺄셈, 곱셈, 나눗셈)과 논리 연산 (AND, OR, NOT, XOR) 을 수행하는 연산 장치이다.

 

CU (Control Unit)

CU는 산술 연산 (덧셈, 뺄셈, 곱셈, 나눗셈)과 논리 연산 (AND, OR, NOT) 을 수행하는 연산 장치이다.

 

Register

Register, clock을 공유하는 n개의 Flipflop으로 구성되어 n개의 비트를 통해 binary 정보를 저장하는 장치이다.

 

cf. FlipFlop

전자 회로에서 1bit 정보를 저장하는 기억 소자

 

Cache

CacheCPURAM 메인 메모리 사이 데이터 전동 속도를 높이기 위해 사용되는 고속 저장장치이다.

 

CPUInstruction Cycle을 통해 (Fetch -> Decode -> Execute -> Store) 다음과 같은 단계를 거친다.

 

 

 

LOAD 15

ADD 57

STORE RESULT

 

1) Fetch Instruction

CPU는 메인 메모리에서 코드 데이터를 읽어오며, instruction들에 대해 PC가 첫 번째 명령어 LOAD 15를 가리킨다. 해당 명령어를 Instruction Register에 가져오고, PC는 다음 명령어를 처리할 수 있게 증가한다.

 

 

2) Decode Instruction

Instruction Decoder가 처리할 명령어에 대해 해석 과정을 거친다. 명령어 LOAD 15에 대해, OperatorLOAD는 적재 명령어임을 해석하고, Operand15는 메모리에서 가져와 Register에 저장한다.

 

3) Execute Instruction

앞서 decode된 내용을 바탕으로 작업을 수행한다.

 

LOAD 15에 경우, decode된 내용은 적재, 15이므로 accumulator15를 저장한다.

 

4) 다시 Fetch

PC가 앞선 fetch과정에서 증가했기에, 두 번째 명령어인 ADD 57 명령어를 가리킨다. 이 명령어를 가져오고, PC는 다시 증가한다.

 

5) Decode Instruction

명령어 ADD 57에 대해, OperatorADD 덧셈 산술 연산 명령어임을 해석하고, Operand57 메모리에서 가져와 Register에 저장한다.

 

6) Execute Instruction

ADD 57의 경우, decode된 내용은 덧셈 산술 연산, 57이므로 accumulator에 저장된 값 (15)에 메모리에서 가져온 피연산자 57에 대한 산술 연산을 처리하여 결과값(72)을 다시 accumulator에 저장한다.

 

7) Store

accumulator에 저장된 계산 결과를 메모리 위치에 저장한다. 앞서서 from memory to register의 방향으로 처리한 load 적재와 반대로, store 저장은 register에서 memory로 데이터를 보낸다.

 

 

양자 모두 CPU 내부에서 데이터를 저장하는 메모리 역할을 하지만 그 용도와 작동 방식은 다르다.

 

register의 경우,

 

CPU 내부에 직접 사용되는,

매우 빠른 처리 속도의

연산에 필요한 소량의 데이터/주소를 일시적으로 저장하는 역할을 한다.

 

cache의 경우,

 

main memory CPU 사이 위치한

최근에 사용/ 빈번하게 사용되는 데이터를 빠른 접근을 위해 저장하여

main memory 접근 시간을 줄임으로 성능을 향상시키는 역할을 한다.

이미지 :

https://velog.velcdn.com/images/nuketuna/post/6a9822ff-e824-4ae4-8957-0abe3b5fb60e/image.png

 

 

 

 

cf. Pipelining

모든 명령어가 같은 길이의 클럭 사이클을 가지게 된다면 단일 사이클 설계만으로 처리가 수월하겠지만, 부동소수점 유닛을 포함한 복잡한 명령어 집합에 대해서는 한계가 있다.

 

이러한 단일 사이클 구현은 Common Case Fast라는 설계 원칙에 위반되기 때문에, 여러 명령어가 중첩되어 실행되는 구현 기술인 Pipelining을 보편적으로 사용한다.

 

ex. 앞선 시나리오에서 예를 들면,

단일 사이클이라면,

첫 번째 명령어 LOAD 15 의 처리 사이클을 마친 이후

두 번째 명령어 ADD 57 에 대해 수행될 것이다.

 

파이프라이닝을 적용하면,

첫 번째 명령어 LOAD 15 Decoding 이후,

LOAD 15Execution을 처리하면서 동시에 ADD 57Decoding하고, 다음 명령어를 가져올 수 있다.

 

Pipelining은 적용하면

cycle time 자체를 단축시키지는 못하나

throughput을 증가시킴으로 병령 처리를 통해 전체 명령어 집합 처리 시간을 단축시킨다.

 

 

 

 

3. 성능 측정 performance

 

성능 예시

개개인 유저 입장에서

Response Time 응답시간으로서의 요청을 보낸 시점부터 응답이 도착하기까지 걸리는 시간,

Execution Time 실행시간으로서 프로세스 관점에서 전체 작업 개시에서 종료까지의 시간이 성능 측정 척도.

 

시스템 관리자

단위 시간당 완료하는 태스크의 수와 관련한 BandwidthThroughput이 중요할 것이다.

 

 

1. Clock Cycle

클록 사이클은 하나의 클록 주기를 의미하며, 시스템의 클록이 한 번 완전히 변하는 시간이다.

클록 사이클은 CPU나 다른 디지털 시스템에서 동작을 정기적으로 동기화하는 기준이 된다.

 

간단히, positive edge에서 다음 positive edge까지 걸린 시간이다.

 

2. Clock Speed / Clock Rate

클록 속도는 시스템 클록의 주파수로, 1초 동안 클록 사이클이 얼마나 발생하는지를 나타냅니다. 측정 단위로 Hz(헤르츠)가 사용되며 초당 발생하는 클록 사이클 수를 의미한다.

 

(clock ratecct의 역수 관계)

 

단위 시간 동안의 positive edges의 수를 의미한다.

 

cf. Positive Edge

Positive Edgeclock signal이 낮은 상태에서 높은 상태로 변화할 때 발생하는 ( 0 -> 1) 상승 엣지 순간을 의미한다.

 

예를 들어, flipflop이나 register 같은 순차 회로는 positive edge에서 데이터를 읽거나 저장한다.

 

 

 

 

고전적인 CPU 성능 식

CPU 시간 = Instruction 개수 * CPI (Clock cycles per Instruction) * Clock Cycle Time

 

 

 

 

 

 

 

 

 

cf. cpu와 관련하여 알면 좋을 CA 쪽 지식들

 

설계철학 관련

 

ISA (Instruction Set Architecture)

ISA, 명령어 집합 구조란 CPU가 이해하고 실행하는 명령어 집합 및 인터페이스를 정의한 추상적 모델이다.

 

어셈블리 기계어 단의 low level의 하드웨어와 high level(사용자와 가까움)의 응용의 소프트웨어 간의 인터페이스를 정의하는 명령어 집합이다.

 

예시)

종류: Intel사의 x86, AMD사의 AMD64(x86-x64), ARM사의 ARM ISA, MIPS, AVR, etc.

 

x86

Intel 사가 설계한 x86 은 복잡한 명령어 셋으로 높은 성능과 다양한 sw를 지원하지만 높은 전력 소모가 발열에 문제점을 가지고 있다. 명령어 집합으로는 CISC를 택했으며, 16bit / 32bit을 사용한다.

 

MIPS

MIPSRISC 기반의 ISA로 단순한 명령어 셋과 고효율적인 설계로 전력 소모와 발열이 상대적으로 적은 장점을 가졌기에 embedded, IoT, 네트워크 장치 등에 널리 사용된다.

 

 

 

CPU 설계 철학: RISCCISC

CISC (Complex Instruction Set Computing)

 

CISC는 복잡하고 다양한 명령어를 포함한 CPU 설계 철학으로, 고급 명령어를 제공하며 SW에 가깝게 high level단으로 프로그래머의 편의성에 초점을 둔 설계 방식이다.

 

설계 방식에서의 가장 큰 특징은 복잡한 명령어의 개수가 많다는 점이다.

 

(+) 장점

프로그래머에게 편함

컴파일 과정이 쉽고 sw친화적 명령어로 인해 호환성이 좋다.

복잡한 작업에 대해 단일 명령어로 처리 가능하다.

다양한 주소 지정을 지원하고, sw 개발에 보다 용이하다.

 

(-) 단점

가변적인 명령어 길이로 하드웨어 설계와 decoding 과정이 복잡하다.

위의 이유로 전력 소모 및 발열이 높다.

모바일 환경 혹은 저전력 기기에 적합하지 않다.

복잡성이 높은 만큼 파이프라이닝 설계가 어려워 처리/실행 속도가 상대적으로 느리다.

 

 

 

RISC (Reduced Instruction Set Computing)

 

RISC는 간소화된 명령어 집합을 포함한 CPU 설계 원칙으로, HW에 가깝게 Low level 단으로 고효율 고성능의 하드웨어 설계에 초점을 둔 설계 방식이다.

 

다음과 같은 장단점을 가진다.

 

(+) 장점

명령어가 간단한 형식과 단순화된 종류를 가진다.

명령어가 고정 길이이기 때문에 decoding 과정이 단순하고 빠르다.

대부분의 명령어가 동일 clock cycle안에서 실행된다.

메모리 접근 및 cache 활용이 효율적이다.

단순한 명령어로 인해 병렬 처리가 수월하고 파이프라이닝 성능이 극대화된다.

단순한 설계로 전력 소모와 발열이 적은 편이다.

 

(-) 단점

복잡한 작업을 처리하는 데에 더 많은 명령어가 필요하다.

명령어가 하드웨어 적이며 처리 비트 단위가 변하거나 프로세서 구조 변경 시 하위 프로세서와 호환성이 떨어진다.

 

 

_______________________________________________________________

발제 2

 

시스템버스

제어버스

2. 내부버스

3. ...

 

CPU의 명령어 이해

연산코드

명령어가 수행할 연산에 대한 정보

 

오퍼랜드

피연산자의 메모리 위치가 담김

 

CPU

ALU (Arithmetic Logic Unit) - 산술논리연산장치

연산 수행

 

CU (Control Unit) - 제어장치

명령 해석

감독 같은 것

 

Register - 레지스터

임시저장장치

 

ALU

 

 

레지스터

프로그램 카운터

다음으로 사용할 명령어를 미리 찾아둠

 

2.메모리 주소 레지스터

메모리 가기전에 서침. 제일 먼저 사용

명령어 실행에 필요한 주소 정보 저장

 

3.메모리 버퍼 레지스터

 

4.명령어 레지스터

실행 중 사용하는 정보 가지고 있음

 

5. 플래그 레지스터

 

6. 스텍 포인트

 

7. 베이스 레지스터

 

 

 

 

CPU 동작

 

 

CPU 성능 관련 개념

 

클럭

 

명령어 병렬 처리 기법

명령어 파이프 라인

인출-해석-실행-저장

 

파이프라인은 뭔가를 동시에 실행 하는 것

 

 

 

 

_________________________________________________________________

수업

 

이전 수업 :

https://ashen99.tistory.com/527

https://teamsparta.notion.site/4737d3fd0c434ca5b4b000bbfa2ce737#dff8c4d6851641b5896cb0044cae577e

 

오늘 수업

https://teamsparta.notion.site/CPU-5fea015eb4654cf0a0234ab874424fb5

 

 

CPU

CPU는 메모리에 저장된 명령어를 읽어들이고, 해석하고, 실행하는 장치입니다.

그리고 CPU 내부에는 계산을 담당하는 ALU(산술 논리 연산 장치), 명령어를 읽어들이고 해석하는 제어 장치, 그리고 작은 임시 저장 장치인 레지스터라는 구성 요소가 있습니다.

 

ALU

ALU는 계산을 담당하는 부품입니다.

ALU는 계산을 담당하는 부품

ALU가 계산을 하기 위해서는 피연산자와 수행할 연산이 필요합니다.

그래서 ALU는 레지스터를 통해 피연산자를 받아들이고, 제어 장치로부터 수행할 연산을 알려주는 제어 신호를 받아들입니다.

ALU가 내보내는 정보

 

연산을 수행한 결과는 특정 숫자나 문자가 될 수도 있고, 메모리 주소가 될 수도 있습니다.

그리고 이 결과 값은 바로 메모리에 저장되지 않고 일시적으로 레지스터에 저장됩니다.

CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 훨씬 느립니다.

ALU가 연산할 때마다 결과를 메모리에 저장한다면, CPU는 메모리에 자주 접근하게 되고, 이는 CPU의 프로그램 실행 속도를 늦출 수 있습니다.

그래서 ALU의 결과 값을 메모리가 아닌 레지스터에 우선 저장하는 것입니다.

 

ALU는 계산 결과와 더불어 플래그를 내보냅니다.

때때로 ALU는 결과 값뿐만 아니라 연산 결과에 대한 추가적인 정보를 내보내야 할 때가 있습니다.

가령 연산 결과가 음수일 때, ALU'방금 계산한 결과는 음수'라는 추가 정보를 내보냅니다.

혹은 연산 결과가 연산 결과를 담을 레지스터보다 클 때, ALU'결과 값이 너무 크다'라는 추가 정보를 내보냅니다.

이러한 플래그는 CPU가 프로그램을 실행하는 도중 반드시 기억해야 하는 일종의 참고 정보입니다.

그리고 플래그들은 플래그 레지스터라는 레지스터에 저장됩니다.

플래그 레지스터는 이름 그대로 플래그 값들을 저장하는 레지스터입니다.

이 레지스터를 읽으면 연산 결과에 대한 추가적인 정보, 참고 정보를 얻을 수 있습니다.

 

이미지 :

https://teamsparta.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F83c75a39-3aba-4ba4-a792-7aefe4b07895%2Fdb9ffaef-54e5-467b-943f-579e1f0c6184%2Fimage.png?table=block&id=10161edb-678b-42f0-8f69-55dcdec32fd2&spaceId=83c75a39-3aba-4ba4-a792-7aefe4b07895&width=1440&userId=&cache=v2

 

예를 들어, 플래그 레지스터가 아래와 같은 구조를 가지고 있고, ALU가 연산을 수행한 직후 부호 플래그가 1이 되었다면 연산 결과는 음수임을 알 수 있습니다.

 

 

이미지

https://teamsparta.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F83c75a39-3aba-4ba4-a792-7aefe4b07895%2F917842f9-cece-445d-b0e1-70721ac8ff46%2Fimage.png?table=block&id=ccedfb9e-c3ea-47c7-a8c0-f5a7b2e73c19&spaceId=83c75a39-3aba-4ba4-a792-7aefe4b07895&width=1440&userId=&cache=v2

 

 

 

 

 

 

 

이미지들 사용하기

 

 

제어장치

제어 장치는 제어 신호를 내보내고 명령어를 해석하는 부품

제어 신호는 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호

참고로, 제어 장치는 CPU의 구성 요소 중 가장 정교하게 설계된 부품이라고 해도 과언이 아닙니다.

그래서 CPU 제조사마다 제어 장치의 구현 방식이나 명령어를 해석하는 방식, 받아들이고 내보내는 정보에는 조금씩 차이가 있다.

이미지 :

https://teamsparta.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F83c75a39-3aba-4ba4-a792-7aefe4b07895%2F52e18a12-8488-4400-b228-b41090bed389%2Fimage.png?table=block&id=74476c88-ca89-4049-bd45-fce31151418b&spaceId=83c75a39-3aba-4ba4-a792-7aefe4b07895&width=1440&userId=&cache=v2

 

 

1) 제어 장치는 클럭 신호를 받아들입니다.

클럭(clock)은 컴퓨터의 모든 부품을 움직일 수 있게 하는 시간 단위입니다.

클럭의 "똑딱-똑딱" 주기에 맞춰 한 레지스터에서 다른 레지스터로 데이터가 이동되거나, ALU에서 연산이 수행되거나, CPU가 메모리에 저장된 명령어를 읽어들이는 것입니다.

컴퓨터 부품들은 클럭이라는 박자에 맞춰 작동할 뿐, 한 박자마다 작동하는 것은 아닙니다.

하나의 명령어가 여러 클럭에 걸쳐 실행될 수도 있습니다.

 

2) 제어 장치는'해석해야 할 명령어'를 받아들입니다.

CPU가 해석해야 할 명령어는 '명령어 레지스터'라고 불리는 특별한 레지스터에 저장됩니다.

제어 장치는 이 명령어 레지스터에서 명령어를 받아들여 해석한 후, 제어 신호를 발생시켜 컴퓨터 부품들에게 수행할 작업을 지시합니다.

 

3) 제어 장치는 플래그 레지스터 속 플래그 값을 받아들입니다.

플래그는 ALU의 연산 결과에 대한 추가적인 상태 정보를 제공합니다.

제어 장치는 이러한 플래그 값을 고려하여 컴퓨터 부품들을 적절히 제어해야 합니다.

 

4) 제어 장치는 시스템 버스, 그 중에서 제어 버스로 전달된 제어 신호를 받아들입니다.

제어 신호는 CPU 내부의 부품뿐만 아니라 입출력 장치와 같은 CPU 외부 장치들을 조작할 때에도 사용됩니다.

제어 장치는 제어 버스를 통해 외부에서 오는 제어 신호도 받아들일 수 있습니다.

 

 

제어 장치가 내보내는 정보는 크게 두 가지로 나눌 수 있습니다

CPU 외부로 전달되는 제어 신호와 CPU 내부로 전달되는 제어 신호입니다.

 

제어장치가 있고 이거는 전기 신호로 실행 명령을 각 장치에 보낸다

 

 

CPU 외부로 전달되는 제어 신호는 주로 제어 버스를 통해 메모리와 입출력 장치로 보내집니다.

예를 들어, 메모리에 저장된 값을 읽거나 새로운 값을 저장하려 할 때, 제어 장치는 메모리에 제어 신호를 보냅니다.

입출력 장치의 값에 접근하거나 변경하고자 할 때도 마찬가지로 제어 신호가 필요합니다.

CPU 내부로 전달되는 제어 신호는 주로 ALU와 레지스터에 관련됩니다.

ALU에는 수행할 연산을 지시하는 제어 신호가, 레지스터에는 데이터 이동이나 명령어 해석을 위한 제어 신호가 전달됩니다.

이러한 제어 신호들은 CPU 내의 다양한 작업들을 조율하는 데 필수적입니다.

 

 

레지스터

프로그램의 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장됩니다.

이는 레지스터에 저장된 값을 관찰함으로써 프로그램의 실행 흐름을 파악할 수 있음을 의미합니다.

, 레지스터 속의 값들을 유심히 관찰하면, 프로그램이 실행되는 동안 CPU 내에서 벌어지는 일들, 그리고 어떤 명령어가 어떻게 수행되는지 알 수 있습니다.

CPU 안에는 다양한 레지스터들이 존재하며, 각각 다른 역할을 가지고 있습니다.

이러한 레지스터들은 CPU의 작동과 프로그램 실행에 중요한 역할을 하며,

각각의 레지스터는 특정한 유형의 데이터나 명령어를 저장하고 처리하는 데 특화되어 있습니다.

 

예를 들어, 일부 레지스터는 연산 결과를 임시로 저장하거나, CPU가 다음에 실행할 명령어의 주소를 가리키는 데 사용됩니다.

 

이처럼 각 레지스터의 기능과 역할을 이해하는 것은 컴퓨터 구조와 프로그래밍의 중요한 부분입니다.

 

상용화된 CPU 속 레지스터들은 CPU마다 이름, 크기, 종류가 매우 다양합니다.

이들은 각 CPU 제조사의 홈페이지나 공식 문서 등에서 확인할 수 있습니다.

모든 레지스터를 전부 다룰 수는 없기에, 여러 전공 서적에서 중요하게 다루는 레지스터와 많은 CPU가 공통으로 포함하고 있는 주요 레지스터 네 가지를 알아보겠습니다.

 

1) 프로그램 카운터 (PC; Program Counter)

메모리에서 가져올 명령어의 주소, 즉 읽어들일 명령어의 주소를 저장합니다.

일부 CPU에서는 이를 '명령어 포인터 (Instruction Pointer)'라고 부르기도 합니다.

 

2) 명령어 레지스터 (Instruction Register)

방금 메모리에서 읽어들인, 해석할 명령어를 저장하는 레지스터입니다.

제어 장치는 이 레지스터의 명령어를 받아들이고 해석한 뒤 제어 신호를 내보냅니다.

 

3) 메모리 주소 레지스터 (MAR; Memory Address Register)

메모리의 주소를 저장하는 레지스터입니다.

CPU가 읽어들이고자 하는 주소 값을 주소 버스로 보낼 때 이 레지스터를 사용합니다.

 

4) 메모리 버퍼 레지스터 (MBR; Memory Buffer Register)

메모리와 주고받을 값(데이터와 명령어)을 저장하는 레지스터입니다.

메모리에 쓰고자 하는 값이나 메모리로부터 전달받은 값은 이 레지스터를 거칩니다.

 

 

 

 

 

 

 

 

 

 

'내일배움캠프_게임서버(202410) > 분반 수업 스텐다드' 카테고리의 다른 글

CPU 수업(정리하기)  (0) 2025.01.15
네트워크  (0) 2025.01.06
cpu 조사  (2) 2025.01.03
전송계층 정리 241227  (1) 2024.12.27
응용 계층(Application Layer) 조사  (0) 2024.12.26