
Instruction Set Architecture(ISA)
Defines the set of instructions a processor can execute
ex : x86, RISC, CISC, ARM, MIPS
Microarchitecture
The internal design of a processor, including pipelines, caches, and execution units (inside of CPU)
System Architecture
The organization of processors, memory, and input/output(I/O) system


Lowest level from SW and Hightest level from HW
Computer Architecture
내가 어디에 있는지만 알면됨유..
컴퓨터는 많은 정보를 처리함 -> 어디에 저장되는가?
Memory : 데이터를 일시적(temporarily) 또는 영구적(permanently)으로 저장하는 장치

CPU ↔ RAM (자주 사용)
CPU ↔ 보조기억장치 (덜 자주 사용, 용량 큼)
프로그램 실행 명령 -> CPU가 RAM(Random Access Memory) 에서 데이터 가져옴
RAM은 자주 사용하는 데이터를 저장하며, 접근 속도가 매우 빠름
Access time: RAM ≪ SSD
전원이 꺼지면 데이터 소실됨 (휘발성)
데이터는 일시적으로만 저장
프로그램 종료 또는 컴퓨터 종료 시 데이터 손실
예: 저장하지 않고 워드 종료 시 -> 입력 내용 모두 사라짐
데이터 영구 저장 목적
예: 사진 150장 업로드 시, 이미지를 저장할 공간이 필요 → 하드디스크에 저장
용량이 크고, 자주 사용되지 않음
사진, 문서 등은 보통 하드 드라이브(HDD, SSD)에 저장됨
컴퓨터의 속도가 무한하다고 가정할 수 없음
실제 설계에서는 비현실적(not practical)임
메모리 또한 무한하지 않음 -> 저장공간은 항상 유한(finite)
메모리 속도와 CPU 속도 불일치 가능성
어느 한 쪽이 더 빠를 수 있음 -> 성능 저하 요인
멀티 프로세서 시스템 설계는 관리 및 프로그래밍이 복잡함
병렬 처리, 멀티태스킹을 위해 고려되어야 함
여러 작업을 동시에 수행 시, 같은 메모리 공간을 공유
충돌(collision) 방지 위한 적절한 메모리 관리 필요
주요 설계 과제 중 하나
CPU 속도, 메모리 용량, I/O 속도를 균형(balance) 있게 설계해야 함
목표: 빠르고 효율적인 시스템(CPU 속도는 빠르게, 시간을 짧게)
전력 소비는 중요한 설계 이슈
에너지 효율성(energy-efficient) 높여 배터리 수명 개선
민감한 데이터를 안전하게 보호해야 함
암호화(encryption) 및 인증(authentication) 기술 적용 필요
시스템은 오랜 시간 동안 일관되게 작동해야 함 (consistency, no failure)

현대 컴퓨터 구조의 기본 모델
하나의 메모리에 데이터와 명령어를 함께 저장함 -> 하드웨어 설계 단순화 가능
Memory: 데이터/명령어 저장
Processor
CU (Control Unit): 제어 흐름 관리
ALU (Arithmetic Logic Unit): 산술/논리 연산
Accumulator: ALU 내 결과 임시 저장
Input/Output 장치와 연결
단일 메모리 구조
명령어와 데이터가 같은 메모리에서 처리됨 → 구조 간단함
하지만 병목 현상 가능

ALU: 연산 담당
PC (Program Counter): 다음 실행할 명령어 주소 저장
IR (Instruction Register): 현재 명령어 저장
MAR (Memory Address Register): 접근할 메모리 주소 저장
MDR (Memory Data Register): 해당 메모리의 데이터 저장
CU: 제어 신호 생성
Accumulator: 연산 결과 임시 저장
버스는 CPU, 메모리, I/O 장치 간 데이터/주소/제어 신호 전송 통로
이 구조에서는 단일 버스(single bus) 사용
-> 명령어/데이터 전송이 한 채널로 처리됨
-> Von Neumann 병목(bottleneck) 발생 가능
write memory & read memory!
Address Bus
1D (one way)
cpu -> memory(or I/O)
Data Bus
2D (Bi-direction)
cpu <-> memory(or I/O)
데이터와 명령어를 하나의 메모리에서 저장/처리
하드웨어 설계 단순화
구성 요소가 적음 -> 생산 비용 절감
통합된 메모리 구조로 소프트웨어 개발 간편
대부분의 현대 컴퓨터에서 사용 중
호환성 보장
데이터와 명령어가 같은 메모리를 공유 -> 속도 저하

데이터와 명령어를 동시에 처리 불가
하나씩 순차적 처리만 가능
잦은 메모리 접근으로 전력 소비 증가
데이터 및 명령어 패치 지연 → 시스템 전반 효율 저하
Von Neumann 구조의 문제점
-> CPU는 명령어 읽기와 데이터 읽기/쓰기를 동시에 수행 불가
-> 이 문제를 해결하기 위해 Harvard Architecture 도입
명령어와 데이터 저장 공간 및 버스 분리
CPU가 명령어와 데이터를 동시에 접근(parallel access) 가능 -> 처리 속도 향상

Data Bus
Data Address Bus
Instruction Bus
Instruction Address Bus
Operational Registers: MAR, MDR
Program Counter (PC)
ALU (산술논리연산장치)
Control Unit (CU)
Input/Output System
2개의 메모리 시스템 (Instruction Memory, Data Memory)
4개의 독립된 버스 사용
명령어와 데이터의 독립적 흐름 확보
메모리 접근이 분리되어 버틀넥 현상 완화
명령어와 데이터를 각각의 메모리 공간에 저장(Seperated)
병렬적/동시적 접근 가능 → 빠르고 효율적
병렬 처리와 메모리 분리 덕분에 성능 향상
빠른 응답이 중요한 임베디드 시스템 등에 적합
CPU 설계가 더 복잡함 -> 제조 비용 상승
두 개의 메모리 사용 -> 더 많은 전력 소비
내가 어셈블리어를 할 수 있을까?_?;;;