02. Computer architecture

Instruction Execution Cycle
Step-by-Step Process
- Read a Line:
- Check Grammar:
- OPcode: 연산자를 확인.
- 지원 연산자: +, -, *, /, M (Move).
- Operands: 두 개의 피연산자를 확인.
- 형식:
- operand1, operand2
- Prefix: R (Register), 0X (Hexadecimal).
- Evaluate Operands:
- 피연산자를 처리하여 실행 가능한 값으로 변환.
- String → Number: 문자열 데이터를 숫자로 변환.
- Register → Number: 레지스터에 저장된 값을 숫자로 변환.
- Do Calculation:
- 계산을 수행하고 결과를 저장.
- Result: 계산 결과를 R0 레지스터에 저장.
- Read the Next Line:
Von Neumann Computer Architecture

components
- 연산장치 (ALU):
- 논리 연산 및 수리 연산을 수행하며, 명령어(OPCODE)와 데이터(OPRAND)로 구성된 명령어 세트를 처리.
- 제어장치 (CU):
- 프로그램 명령어를 해독, 처리 순서를 제어, 결과 저장 및 출력 관리.
- 노스브리지: CPU, 메모리, 그래픽카드 등 제어.
- 사우스브리지: 입출력 장치(마우스, 키보드 등) 제어.
- 저장장치 (Memory):
- 데이터를 저장하며 CPU 내 레지스터, RAM, 외부 메모리(하드디스크, SSD 등)로 구성.
- 입력장치 (Input):
- 사용자 명령을 입력하는 장치 (예: 키보드, 마우스).
- 출력장치 (Output):
- 처리 결과를 출력하는 장치 (예: 모니터, 프린터).
Key Features
- Concrete Realization of Turing Machine
- 튜링 머신의 구체적인 구현으로, 범용 계산을 가능하게 함.
- Stored Program
- 프로그램이 메모리에 저장됨.
- 장점: 저장된 프로그램을 변경하면 컴퓨터의 동작을 바꿀 수 있음.
- 새로운 알고리즘과 프로그램을 추가할 수 있어 이전에는 풀지 못했던 문제도 해결 가능.
- Sequential Execution
- 명령어는 Instruction Pointer (IP) 또는 Program Counter (PC)를 이용해 순차적으로 실행됨.
- Control Flow는 특정 명령어(branch, return)에 의해 변경될 수 있음.
Control Flow와 Basic Block
- Sequential Control Flow:
- Change in Control Flow:
- branch, return 등의 명령어로 제어 흐름이 변경될 수 있음.
- Basic Block:
- 분기 없이 순차적으로 실행되는 제어 흐름의 최소 단위.
Foundation of Instruction Execution Cycle
명령어 실행 과정은 다음과 같은 사이클로 이루어짐:
- Fetch: 메모리에서 다음 명령어를 가져옴.
- Decode: 명령어와 피연산자를 해석함.
- Evaluate Operands: 실행에 필요한 데이터를 준비함.
- Access Memory: 메모리에서 데이터를 읽거나 씀.
- Update Result: 계산을 수행하고 결과를 저장함.
- Update PC: 다음 명령어를 실행하기 위해 프로그램 카운터를 업데이트함.
Main Memory in ISA Computers
현대 ISA 컴퓨터는 DRAM (Dynamic Random Access Memory)를 주 메모리로 사용함.
Purpose: 프로그램과 데이터를 저장해 실행 가능하게 하며, 효율적이고 유연한 계산을 지원함.
Linux Computers와 Program Loading
- 프로그램 실행 전, 운영체제(OS)는 프로그램 로딩을 수행함:
- 하드 디스크나 SSD 같은 저장소에서 프로그램 코드와 데이터를 RAM으로 전송함.
- 프로그램이 실행될 준비를 할 수 있도록 특정 메모리 주소에 배치함.
Implications of Von Neumann Architecture
-
컴퓨팅 유연성:
- 메모리에 저장된 프로그램은 동적으로 업데이트되거나 교체될 수 있음.
- 이 유연성을 통해 새로운 문제 해결이 가능해짐.
-
범용성:
- 동일한 하드웨어로 다양한 작업을 수행할 수 있음.
-
한계점:
- Von Neumann Bottleneck: CPU와 메모리 간 데이터 전송 속도가 제한되어 성능 저하가 발생할 수 있음.
Stack Machine (1980s)


Data-Flow Machine

- Execution Based on Data Flow:
- 명령어는 데이터의 의존성에 따라 실행됨.
- 데이터 간 의존성이 없을 경우 병렬 처리 가능, 동시에 여러 작업 수행.
- Parallel Execution:
- 데이터 의존성을 기반으로 하는 구조로, 효율적인 비순차적 실행을 지원.
- Hardware Complexity:
- 명령어 스케줄링을 위한 복잡한 하드웨어 구성이 필요함.
