[컴퓨터과학 개론] 9강 - 컴퓨터 구조(1)

2025. 11. 10. 19:08·방송통신대학교/💻컴퓨터과학 개론

✅ 1. 불 대수와 논리 게이트

(1) 컴퓨터 하드웨어의 기본 구성

  • 하드웨어 기본 구성요소는 크게 중앙처리장치, 기억장치, 입력장치, 출력장치로 구성이 되어있음.
  • 중앙처리장치: 제어장치와 연산장치 그리고 CPU 안에서 데이터나 연산의 저장을 임시적으로 저장 할 레지스터가 있으며, 연산장치와 레지스터를 합쳐서 처리장치로 보고 있음. 제어
  • 제어장치가 핵심이며, 연산장치는 계산기로써 제어장치가 명령어를 해석할 때 필요에 의해서만 호출이 되며 계산이 된다.
  • CPU가 메모리, 입출력장치 등 다른 장치와 데이터를 주고받을 때는 시스템 버스를 통해서 이루어지게 된다.
  • 이때 제어장치(CU) 가 시스템 버스를 통해 하드웨어에 접근해 읽기/쓰기 신호를 전송하며 하드웨어를 제어할 수 있게 됨.

(2) 시스템 버스

  • 중앙처리장치, 기억장치, 입출력장치 간의 물리적 연결 및 데이터 교환의 통로 역할을 하는 버스를 의미함.
  • 하지만 해당 버스는 보통 CPU의 의해서 사용이 됨. 쉽게말해, 요청의 시작은 CPU에서 출발을 한다는 의미임.
  • 하드웨어 측면에서는 소켓을 통해 CPU가 메인보드가 꽂혀 있으며, 즉 메인보드 위의 구현된 연결선들이 버스로 볼 수 있음.
  • 전송되는 데이터 내용에 따라 주소 버스, 데이터 버스, 제어 버스 3가지로 나뉘게 된다.

[ 주소 버스 ]

  • 주소 버스는 CPU가 어디에 접근할지 지정하는 신호선임. ( 단방향 버스임 )
  • 쉽게말해, CPU가 0x1000 주소를 주소 버스에 올리면 메모리에게 "야 0x1000번지 준비해" 라고 알려주는 것임.
  • 이 순간 아직 데이터는 없으며, 단순히 위치 지정한 한 것이다. 또한, CPU 에서 신호만 주는 것이므로 단향방으로 이뤄짐.

[ 제어 버스 ]

  • 제어 버스는 CPU가 시스템 구성요소에게 동작을 지시하는 신호선임.
  • 읽기/쓰기, 인터럽트, 클럭 등 신호 전달 ( CPU가 "이 동작을 해라"라고 지시 )
  • 쉽게말해, 지금 CPU가 하고 싶은 동작이 읽기 인지 쓰기 인지를 알려주는 신호임.
  • 주소 버스를 통해 지정한 위치인 0x1000에 읽기 신호면 달라고 요청하고 쓰기면 저장을 하라고 명령함.

[ 데이터 버스 ]

  • 데이터 버스는 CPU가 메모리나 I/O 장치와 실제 데이터를 주고받는 통로이다.
  • 주소 버스를 통해 위치 지정 후 제어 버스를 통해 명령을 하면 만약 쓰기 일 경우에는 저장 할 데이터를 넘겨주거나, 읽기 신호에는 데이터를 읽어와야 하는데 이때 데이터 버스가 데이터를 전달하고 받아오는 역할을 해줌.

[ 정리 ]

1. CPU가 메모리에서 값을 읽고 싶다
제어 버스: “읽기(Read) 하라!”
주소 버스: “메모리 0x100번지 값을 가져와라!”
데이터 버스: 메모리 0x100번지의 실제 값(예: 42)을 CPU로 전달

2. CPU가 메모리에 값을 쓰고 싶다
제어 버스: “쓰기(Write) 하라!”
주소 버스: “메모리 0x200번지에 저장”
데이터 버스: CPU 레지스터 값(예: 99)을 메모리로 전달

(3) 불 대수

  • 불대수는 참(Ture, 1)과 거짓(False, 0)만을 원소로 갖는 대수 구조로, 논리적 연산(AND, OR, NOT)을 수학적으로 다루는 체계를 의미한다.
  • 쉽게말해, 일반 대수에서 숫자와 +, * 가 있는 것처럼 불대수에서는 논리값과 논리연산으로 계산하는 체계를 의미하는 것임.

(4) 기본 논리연산의 진리표

  • AND, OR, NOT 이 세 가지만 있으면 다른 어떤 논리 연산도 조합해서 만들 수 있음.
  • 디지털 회로 설계: 논리 게이트(AND, OR, NOT) 구성
  • 프로그래밍 조건문: if (A && B) 같은 논리 판단

(5) 논리 게이트

  • 디지털 회로의 기본 단위로, 불 대수의 연산을 실제 전기 신호로 구현한 장치이다.
  • 쉽게말해, 논리연산을 입력 전기 신호를 받아서 규칙에 따라 출력 신호를 내보내는 장치이다.
  • 즉, 논리 연산 기능을 수행하는 최소 단위의 전자 회로라고 보면 됨. ( AND OR NOT 이 가장 근간이 됨. )

[ 복합 논리연산의 진리표 ]

[ 주요 논리 게이트와 동작 ]

게이트 논리식 설명 진리표(입력 -> 출력)
AND F = X ∧ Y 모든 입력이 1일 때만 출력 1 0∧0=0, 0∧1=0, 1∧0=0, 1∧1=1
OR F = X ∨ Y 입력 중 하나라도 1이면 출력 1 0∨0=0, 0∨1=1, 1∨0=1, 1∨1=1
NOT F = ¬X 입력을 반대로 바꿈 ¬0=1, ¬1=0
NAND F = ¬(X ∧ Y) AND의 부정 0↑0=1, 0↑1=1, 1↑0=1, 1↑1=0
NOR F = ¬(X ∨ Y) OR의 부정 0↓0=1, 0↓1=0, 1↓0=0, 1↓1=0
XOR F = X ⊕ Y 입력이 서로 다를 때 출력 1 0⊕0=0, 0⊕1=1, 1⊕0=1, 1⊕1=0
XNOR F = ¬(X ⊕ Y) XOR의 부정 0≡0=1, 0≡1=0, 1≡0=0, 1≡1=1

(6) 논리 게이트의 완전 집합

[ 완전 집합 ]

  • 어떤 하나의 논리 회로를 구성하는 데 필요한 모든 불 논리 함수를 구현할 수 있는 최소한의 논리 게이트 집합을 의미한다.
  • 즉, {AND, OR, NOT} 이 세 가지를 묶어서 최소한의 논리 게이트 집합(완전 집합)이라고 부름.

[ 논리 회로 ]

  • 물리적인 하드웨어 측면으로 논리 게이트(AND, OR, NOT 등)들을 여러개 묶어서 만들어놓은 회로이다.
  • 즉, 전기적 신호(0과 1)를 입력받아, 설계된 논리에 따라 출력 신호를 만들어내는 전자 회로라고 볼 수 있음.

[ 불 함수 ]

# 불 함수 - 기본 연산
AND (논리곱) => A*B 또는 AB
OR (논리합) => A + B
NOT (부정) => A′

# 불 함수 - 파생 연산
NAND (NOT-AND) => (AB)′
NOR (NOT-OR) => (A + B)′
XOR (베타적 논리합) => A⊕B = A′B+AB′

# 예시 함수
F(A,B,C)=(A+B)′C
F(A,B,C)=A′BC+AB′C+ABC′ ...
  • 불 함수는 논리 게이트(AND, OR, NOT 등)의 동작을 수학적 기호로 표현하여, 여러 게이트들을 하나의 논리식으로 묶어 나타낸 함수를 의미한다. 쉽게말해, 복잡한 논리식을 수학식으로 정리한 것이다.
  • 불 함수 목적: AND, OR, NOT 게이트 하나만으로 할 수 있는 논리 연산은 아주 단순한 것들뿐이라 여러 게이트들을 조합해서 복잡한 판단과 연산을 할 수 있게 만드는 것이 목적임.
  • 논리 게이트의 동작을 사람이 이해하기 쉽게 수학적 기호(AND = 곱, OR = 합, NOT = 부정)로 표현한 것을 의미함.
  • 즉, 논리 회로를 설계하기 위한 추상적인 수학적 표현이며, 실제 회로를 만들기 전 설계하고 분석할 때 사용함.

[ {AND, OR, NOT} - 완전 집합 ]

  • 가장 대표적인 완전 집합으로 AND, OR, NOT만으로 어떤 논리 회로도 구현이 가능함.

[ {NAND (NOT + AND) } - 단일 게이트 ]

# 예시: NAND만으로 만든 기본 게이트
NOT(A) = A NAND A
AND(A, B) = (A NAND B) NAND (A NAND B)
AND(1, 1) = (1 NAND 1 = 0) NAND (1 NAND 1 = 0) = 0 NAND 0 = 1
OR(A, B) = (A NAND A) NAND (B NAND B)
  • NAND만 가지고도 AND, OR, NOT, XOR 등 모든 회로를 구현할 수 있음.
  • 그래서 NAND는 "유니버설 게이트"라고도 불림.
  • 핵심은 완전 집합을 알면 하나의 게이트만으로도 컴퓨터 논리 회로를 전부 구현 가능
  • 중요한 이유: 하나의 게이트만을 사용 할 수 있어 회로 설계 단순화가 되며, 공정과 재료 최소화로 비용 절감을 할 수 있음.
  • 그 외에도 {NOR (NOT + OR) } 게이트가 있음.
  • NAND, NOR 게이트는 기본적인 AND OR NOT 을 기반으로 하기 때문에 파생 연산으로 볼 수 있음.

(7) 불 대수의 기본 법칙

  • 불 함수를 더 간단하게, 효율적으로, 혹은 원하는 형태로 변형할 때 쓰는 수학적 규칙이다.
  • 불 대수의 기본 법칙을 활용하면 논리 연산을 안전하고 일관되게 다룰 수 있게 된다.
  • 쉽게말해, 논리식을 변형하거나 단순화할 때 지켜야 하는 공식 같은 것임.
  • 해당 기본 법칙들은 불 함수 내부의 논리 연산을 규정하는 규칙으로 볼 수 있음.

(8) 불 대수와 논리회로

  • 기본 법칙들을 활용해서 불 함수를 간소화 할 수 있음.

[ 논리 회로 ] - 또 짚고 넘어가기!

  • 물리적인 하드웨어 측면으로 논리 게이트(AND, OR, NOT 등)들을 여러개 묶어서 만들어놓은 회로이다.
  • 즉, 전기적 신호(0과 1)를 입력받아, 설계된 논리에 따라 출력 신호를 만들어내는 전자 회로라고 볼 수 있음.

[ 불 함수 ] - 또 짚고 넘어가기!

# 불 함수 - 기본 연산
AND (논리곱) => A*B 또는 AB
OR (논리합) => A + B
NOT (부정) => A′

# 불 함수 - 파생 연산
NAND (NOT-AND) => (AB)′
NOR (NOT-OR) => (A + B)′
XOR (베타적 논리합) => A⊕B = A′B+AB′

# 예시 함수
F(A,B,C)=(A+B)′C
F(A,B,C)=A′BC+AB′C+ABC′ ...
  • 불 함수는 논리 게이트(AND, OR, NOT 등)의 동작을 수학적 기호로 표현하여, 여러 게이트들을 하나의 논리식으로 묶어 나타낸 함수를 의미한다. 쉽게말해, 복잡한 논리식을 수학식으로 정리한 것이다.
  • 불 함수 목적: AND, OR, NOT 게이트 하나만으로 할 수 있는 논리 연산은 아주 단순한 것들뿐이라 여러 게이트들을 조합해서 복잡한 판단과 연산을 할 수 있게 만드는 것이 목적임.
  • 논리 게이트의 동작을 사람이 이해하기 쉽게 수학적 기호(AND = 곱, OR = 합, NOT = 부정)로 표현한 것을 의미함.
  • 즉, 논리 회로를 설계하기 위한 추상적인 수학적 표현이며, 실제 회로를 만들기 전 설계하고 분석할 때 사용함.

✅ 2. 논리회로

  • 논리 게이트들로 구성된 회로를 논리회로 라고 부름
  • 물리적인 하드웨어 측면으로 논리 게이트(AND, OR, NOT 등)들을 여러개 묶어서 만들어놓은 회로이다.
  • 즉, 전기적 신호(0과 1)를 입력받아, 설계된 논리에 따라 출력 신호를 만들어내는 전자 회로라고 볼 수 있음.
  • 컴퓨터 뿐 아니라 모든 회로를 쓰는 기기라면 논리 게이트를 가지는 논리 회로를 가지고 있음.
  • 종류는 조합회로, 순서회로 크게 두 가지로 구분 할 수 있음.

(1) 조합회로

  • 기본적으로 논리 게이트들로만 모여있음
  • 출력값이 단순히 현재 입력값의 조합에 의해서만 결정되는 회로를 의미함.
  • 전가산기, 디코더, 인코더, 멀티플렉서, 디멀티플렉서 등이 있음.
  • 주로 연산을위해서 사용되는 회로가 해당이 된다.

(2) 순서회로

  • 연산의 각 단계마다 회로의 특정 상태가 저장되고 참조되는 회로를 의미함.
  • 출력값이 입력값과 기억소자에 저장된 현재 상태에 따라 결정이 된다.
  • 회로의 상태를 플립플롭 이라는 기억소자를 통해 저장이 되며, 다시 입력으로 제공이 되고 다음 또 저장을 하는 특징을 가짐.
  • 카운터, 레지스터 등이 있음.

(3) 플립플롭 (flip-flop)

  • 1비트의 이진 정보를 저장할 수 있는 장치이다.
  • 입력신호에 의해서 상태를 바꾸도록 지시할 때까지는 현재의 이진 상태를 유지하는 논리소자이다.
  • 종류: 입력의 개수와 상태를 변화시키는 방법에 따라 RS, T, D, JK 등 다양한 플립플롭이 있음.
  • 쉽게말해, 순서회로에서 값을 저장하고 기억하는 최소 단위 논리회로

(4) RS (Reset-Set) 래치, 플립플롭

[ RS 래치 ]

  • 가장 기본적인 순서회로 중 하나로 NOR(NOT OR) 2개 또는 NAND 게이트 2개를 이용해서 만들 수 있음.
  • 입력 R(Reset), S(Set)에 따라 출력 Q와 Q' 를 결정하고, 입력이 변하지 않으면 상태를 유지하는 특징이 있음.
  • 입력을 바꾸면 바로 출력이 바뀌므로 비동기식이라고도 부름

[ RS 플립플롭 ]

  • RS 래치를 클럭 신호(CLK)에 동기화한 버전이다.
  • 즉, 입력이 들어와도 클럭 신호가 활성화될 때만 상태가 바뀌도록 만든 것이 RS 플리플롭임.
  • CLK가 1일 때만 입력을 반영하므로 동기식 회로이다.

(5) RS 래치의 동작

(6) T(Toggle) 플립플롭

  • 입력이 들어올 때마다 상태가 바뀌는 스위치처럼 동작하는 기억 장치이다.
  • 정리하면, 순서 회로에서 특정 값을 저장하기 위해서 플리플롭을 사용하는 것이다.

(6) 전가산기 (Full Adder) - 조합회로 대표적인 예

[ 가산기 ]

  • 디지털 회로에서 두 개 이상의 이진수를 더하는 연산을 수행하기 위해 사용되는 기본적인 조합 논리 회로이다.
  • 이러한 가산기는 입력 비트 수와 캐리(자리 올림) 비트 처리 방식에 따라 반가산기 또는 전가산기로 나뉜다.

[ 전가산기 ]

  • 아랫자리에서 올라오는 올림수 carry를 고려한 가산기이다.

[ 반가산기 ]

  • 아랫자리의 올림수를 고려하지 않는 가산기이다.
  • 올림수를 고려하지 않으므로, 위의 사진 HA 2개가 모여 전가산기가 되는 HA 가 반가산기이다.
  • 두 개의 1비트 이진수를 더하고, 합(Sum)과 캐리(Carry)를 출력하는 논리 회로이다.

[ 4비트 전가산기 ]

[ 십진수 5 + 6 = 11 -> 전가산기 표현 ]
5(101) + 6(110) = 11(1011)
1 + 0 = sum(1), carry(0)
0 + 1 = sum(1), carry(0)
1 + 1 = sum(0), carry(1) -> 올림수 밑에 + 1
+ 1 = sum(1)
-> 결과: sum을 모두 비트수부터 합치면 1011 -> 11이 됨.

[ 십진수 6 + 6 = 12 -> 전가산기 표현 ]
6(110) + 6(110) = 12(1100)
0 + 0 = sum(0), carry(0)
1 + 1 = sum(0), carry(1)
1 + 1 + 1 = sum(1), carry(1) -> 올림수(carry) 밑에 + 1
+ 1 = sum(1)
-> 결과: sum을 모두 비트수부터 합치면 1100 -> 즉, 십진수 12가 됨
  • 한 비트씩 계산을 하는것이 전가산기이며, 전가산기 여러개를 붙히면 비트를 늘려서 계산 할 수 있게됨.
  • 올림수는 다음 전가산기로 보내면서 계산을 해야함.

(7) 디코더 - 조합회로 대표적인 예

  • n 비트의 이진 코드를 최대 2n제곱 개의 서로 다른 정보로 변환하는 장치이다.

  • 주소 방식으로 주어진 입력으로부터 각각의 하드웨어 구성 요소를 개별적으로 구동하기 위해 주로 사용함.
  • 이것의 정 반대되는 개념으로 2n제곱 개의 입력이 들어오면 n개의 출력을 만들어내는 인코더라는 회로가 있음.

[ 정리 ]

  • 디코더 역할: CPU가 보낸 **주소 코드(식별자)**를 받아서, 해당 메모리 셀 하나만 선택하는 회로. 
  • 디코더 핵심 기능: “어떤 메모리 셀을 선택할지” 결정 → 접근 회로의 역할.
  • 하지만, CPU에 국한되지 않고 디코더는 접근 선택을 해주는 회로로 다양하게 쓰일 수 있는 범용 선택 회로임.

(8) 멀티플렉서 - 조합회로 대표적인 예

  • 여러 개의 입력선 중에서 하나를 선택하여 단일의 출력으로 내보내는 회로를 의미함.
  • 데이터를 선택한다고 해서 데이터 선택기로도 부름.

  • 어떤 장치(회로)로 부터 들어오는 데이터가 버스를 사용할 것인가를 정하는 경우에 주로 사용됨.

  • 멀티플렉서와 반대되는 개념으로 디멀티플렉서가 존재하며, 멀티플렉서는 2^n 개의 입력이 들어올 때 1개를 출력하는 것과 반대로 디멀티플렉서는 1개의 입력이 들어올 때 2^n 개의 출력을 해주는 회로임.

[ 정리 ]

  • 멀티플렉서 역할: 여러 데이터 라인 중에서 CPU가 필요로 하는 데이터 하나만 선택해서 CPU로 전달. 
  • 멀티플렉서 핵심 기능: “선택된 메모리 셀의 데이터를 CPU로 전달”
  • 하지만, 메모리에 국한되지 않고 멀티플렉서는 데이터 전달 선택을 해주는 회로로 다양하게 쓰일 수 있는 범용 선택 회로임.

(9) 멀티플렉서 & 디코더 결론

  • 디코더와 멀티플렉서는 주로 CPU가 메모리에 접근하고 데이터를 메모리에서 받아오기 위한 회로로 사용이 된다.
  • 디코더 예시: CPU가 메모리에게 "100번지 주소에 있는 데이터를 줘!"라고 명령을 보낼 때, 디코더는 이 '100번지'라는 주소값을 해독해서 정확히 그 위치에 있는 메모리 셀을 '찾아내고 선택'하는 역할을 함. 마치 수많은 우편함(메모리 셀) 중에서 우편 배달부(디코더)가 주소를 보고 정확한 우편함 하나를 콕 집어내는 것과 같음.
  • 멀티플렉서 예시: 디코더가 100번지 메모리 셀을 선택하면, 이제 그곳에 저장된 데이터가 외부로 나와야 함. 그런데 하나의 메모리 칩 안에는 여러 개의 데이터가 동시에 대기하고 있을 수 있음. 이때 멀티플렉서는 여러 데이터 입력 라인 중에서 '선택된' 메모리 셀의 데이터만을 골라서 데이터 버스로 내보내는 역할을 함.
  • 디코더 요약: CPU가 지정한 **'주소'**에 해당하는 메모리 위치를 선택함.
  • 멀티플렉서 요약: 선택된 메모리 위치에서 나온 여러 데이터 후보 중 최종적으로 **버스에 실을 '데이터'**를 선택함.
  • 그러나 이는 주된 용도일 뿐, 본질적으로 디코더는 어떤 장치나 메모리 셀을 선택하는 접근 선택용 조합회로이고, 멀티플렉서는 선택된 데이터 중 필요한 것만 전달하는 데이터 전달 선택용 조합회로입니다.
  • 핵심은 CPU와 메모리 둘 다 디코더와 멀티플렉서를 가지고 있음. 그리고 각각 쓰임새가 다름.
  • CPU에서 디코더: CPU가 명령어를 실행할 때, 디코더는 명령어를 해석하여(decode) 필요한 **연산 장치(ALU)**나 레지스터를 선택합니다.
  • CPU에서 멀티플렉서: 여러 레지스터의 데이터 중 하나를 선택해 ALU로 보내거나, 시스템 버스로 내보내는 역할을 합니다.
  • 메모리에서 디코더: CPU가 특정 메모리 주소를 요청하면, 메모리 내부의 디코더는 주소를 해독하여 **특정 행(Row)**을 선택합니다.
  • 메모리에서 멀티플렉서: 선택된 행에 있는 여러 데이터 중 **특정 데이터(열)**를 골라 외부로 출력합니다.
  • 즉, CPU와 메모리에서 입출력을 담당하는 회로로 볼 수 있음.

(10) 카운터 - 순서회로 대표적 예

  • 클록펄스가 입력될 때마다 미리 정해진 순서에 따라 상태가 변하는 장치이다.
  • 매번 구동 시마다 저장된 이진수가 1씩 증가하는 장치임.
  • 외부에서의 입력/출력이 없으며, 클록펄스를 통해서만 상태가 변함.

실제로 이런 회로들을 이용해서 컴퓨터 시스템의 핵심 장치들이 어떻게 구성되고 동작하는지 알아보자.


✅ 3. 기억장치

[ ROM (Read-Only Memory) ]

  • 읽기 전용으로, 내용이 항상 고정되어 있어 조합회로 구성이 가능함.
  • 고정된 프로그램을 구성 할 때 사용이 됨.

[ RAM (Random Access Memory) ]

  • 읽기/쓰기 모두 가능함.
  • 상태를 저장/변경할 수 있는 순서회로로 구성이 가능함.
  • 하지만 실제로 사용되는건 DRAM으로 플리플롭이 아닌 축전지로 구현이 되며, 시간이 지남에 따라 전류가 방전되며, 주기적인 리프레시 과정이 필요함.

(1) ROM

  • 설계자가 저장되는 이진 정보를 결정하고, 기억장치 내에서 필요한 내부 연결 패턴을 형성해서 구현을 함.
  • 즉, 고정된 프로그램이 들어감.

  • 예를들어, 5비트로 이루어진 4개의 이진 정보를 ROM 으로 구현을 할 땐 위의 이미지와 같은 형태로 구현을 할 수 있음.
  • A0 와 A1 에 주소값인 비트에 따라 맞는 출력을 하게 된다. 예시 이미지로는 주소가 0 1 인 경우 1번째 주소가 1이 되며 OR 연선에 맞게 출력을 하게 됨. 중간의 x는 끊긴 부분임. 즉, 하나의 디코더와 여러개의 OR 게이트로 구성이 됨.
  • 출력의 비트 즉, 내용의 길이는 계속 늘릴 수 있음.
  • 확장은 디코더의 비트 수를 늘리는 것과 디코더를 추가하는 두 가지 방법 모두 ROM의 크기를 확장할 수 있음.
  • 출력 내용의 크기는 OR 게이트의 개수에 따라 증가할 수 있음.

(2) RAM

  • RS 플립플롭을 활용하여 1비트를 기억하는 기억소자를 만들 수 있음.
  • 소자(소자선택)가 0일때는 동작하지 않으며, 1일때만 동작을 함.
  • 입력값 1, 0 에 따라서 저장(set), 리셋 저장을 시키거나 읽기를 하거나 동작을 할 수 있음.

  • 위의 이미지와 같이 RS 플립플롭 순서회로와 디코더, OR 게이트를 활용해서 RAM 을 만들 수 있음.
  • 디코더는 소자 선택용으로 만약 이진수를 통해 1번째 주소에 1이 들어오게 되면 그거에 맞는 RS플립플롭 기억소자들만 활성화가 되게 된다. 이후에, 읽기 또는 쓰기에 맞는 이진수가 들어오게 되면 그거에 맞게 동작을 함.

(3) 기억장치의 계층 구조

  • 기억장치는 접근 속도와 저장 용량에 따라 계층적으로 분류가 된다.
  • CPU가 데이터에 접근함에 있어서 가장 적은 비용으로 가장 높은 성능을 얻기 위한 전략으로 계층적으로 구성이 됨.
  • CPU가 데이터에 접근할 때 가장 적은 비용으로 가장 높은 성능을 얻기 위해, 참조의 지역성(Locality of Reference)을 활용하여 메모리를 계층 구조로 설계한 것이다.
  • 참조의 지역성은 공간적 지역성, 시간적 지역성으로 나눌 수 있음.

[ 공간적 지역성 ]

  • 기억장소의 특정 위치에 있는 정보를 참조하고 있을 때 다음 순간에 접근할 위치는 현재의 접근 위치와 근접해 있을 가능성이 크다는 것을 전제로 함.
  • 현재 접근한 데이터 주변에 있는 데이터도 곧 접근될 가능성이 높다는 의미를 가지고 있음.
  • 현재 접근한 데이터 주변을 미리 캐시나 버퍼에 불러두면 효율적으로 처리가 가능함.
  • 쉽게 말해, 배열의 특정 인덱스에 접근 할 시 해당 배열의 주변 인덱스도 미리 캐시로 가져오는 그런 느낌임.

[ 시간적 지역성 ]

  • 최에 접근한 위치들이 가까운 미래에 다시 접근할 가능성이 크다는 것을 전제로 함.
  • 최근에 접근한 데이터는 가까운 미래에도 다시 접근될 가능성이 높다는 의미를 가지고 있음.
  • 예시로는 최근에 쓴 데이터를 캐시에 남겨두면 CPU가 다시 접근할 때 빠르게 처리가 가능함을 의미함.

[ 레지스터 ]

  • CPU 내부에 존재하여 각종 연산에 직접적으로 사용이 되는 소량의 가장 빠른 형태의 기억장치이다.

[ 캐시 기억장치 ]

  • CPU와 주기억장치 사이에 위치하며, 주기억장치 보다 접근 속도가 빠른 소규모 기억장치이다.
  • CPU와 주기억장치 간의 속도 차이를 줄여주는 역할을 함.
  • 수행 중인 명령어와 자주 사용되는 데이터를 저장하였다가 CPU 요청가 해당 명령어와 데이터를 요청할 때 즉시 제공해줌.

[ 주기억장치 ]

  • 현재 수행 중인 프로그램 코드와 데이터 저장되는 기억장치

[ 보조기억장치 ]

  • 반영구적인 저장을 위한 기억장치
  • 사용하려면 주기억장치에 적재되어야 함.

'방송통신대학교 > 💻컴퓨터과학 개론' 카테고리의 다른 글

[컴퓨터과학 개론] 11강 - 프로그래밍 언어(1)  (0) 2025.11.10
[컴퓨터과학 개론] 10강 - 컴퓨터 구조(2)  (0) 2025.11.10
[컴퓨터과학 개론] 8강 - 운영체제(2)  (9) 2025.11.10
[컴퓨터과학 개론] 7강 - 운영체제(1)  (2) 2025.11.10
[컴퓨터과학 개론] 6강 - 알고리즘(2)  (0) 2025.11.10
'방송통신대학교/💻컴퓨터과학 개론' 카테고리의 다른 글
  • [컴퓨터과학 개론] 11강 - 프로그래밍 언어(1)
  • [컴퓨터과학 개론] 10강 - 컴퓨터 구조(2)
  • [컴퓨터과학 개론] 8강 - 운영체제(2)
  • [컴퓨터과학 개론] 7강 - 운영체제(1)
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (233)
      • 방송통신대학교 (87)
        • ⚙️컴퓨터의 이해 (11)
        • 💻컴퓨터과학 개론 (15)
        • 🔢자료구조 (14)
        • 🧬알고리즘 (10)
        • ⚙️운영체제 (14)
        • 🕸️이산수학 (11)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • 🖥️컴퓨터과학과 (1)
      • 공부 (72)
        • 📚백엔드 공부 (6)
        • ☕Java (23)
        • 🌳Spring (13)
        • ⚙️C (12)
        • ⚡Python (15)
        • JavaScript (1)
        • 🛢️Database (0)
        • Algorithm Problem Solving (2)
      • 네트워크 (7)
        • 📜HTTP (7)
      • 스파르타코딩클럽 (64)
      • 정보 (2)
      • 정리가 필요한 글 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    유비쿼터스
    배열
    운영체제
    Java
    방통대
    방송대
    파이썬
    C언어
    Python
    알고리즘
    함수
    이산수학
    방송통신대학교
    컴퓨터의 이해
    컴퓨터과학 개론
    spring
    자료구조
    자바
    그래프
    컴퓨터과학과
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
[컴퓨터과학 개론] 9강 - 컴퓨터 구조(1)
상단으로

티스토리툴바