ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 💻 [OS 오퍼레이팅시스템] #1 | Computer System Overview 1
    CS/OS 2022. 4. 14. 17:53

     

     


     

    💻 기본요소

    - Basic components 

    1. CPU : Register file(ALU 임시결과 저장), ALU(사칙연산, 로직), Cache(SRAM)

    2. Memory

    3. I/O module : 외부 사용자가 입출력, 디스크 드라이버

    4. System Bus : 위의 3가지를 연결, 이동하는 길

     

    CPU에 의해 실행되는 모든 수행은 메모리 접근이 요구된다. 

    데이터는 CPU 실행에 의해 보조 저장장치에서 주요 메모리로 이동된다.

    프로그램은 Disk에 존재 -> 실행 요청 받으면 메모리에 올라옴 -> 실행하면 버스타고 레지스터로 이동


    💻 마이크로프로세서의 진화

    - Processor (처리기) 

    ALU (Arithmetic/logic unit) : 만능계산기, 수학적 계산과 논리적 비교를 한다.

    CPU : ALU, control unit, register을 활용하여 명령어 set을 수행한다.

    멀티 프로세서 : 각 chip은 multiple processors(코어)를 포함하고 있다.

     

    CPU 종류 다양하다(ex. PIC, Z80, ARM PXA, Pentium)

    단일 프로세서에서, 클락 스피드(Frequency)가 높을 수록 성능이 좋아진다.

    -> 단일 프로세서의 성능에 한계가 있어 이후 프로세서의 개수를 늘리기 시작했다. (ex. 듀얼코어)

    소형기기, 모바일기기 등 종류에 따라 알맞은 CP가 있다.

     

    - processors의 진화 

    GPU (Graphical Processing Units) : 그래픽 연산 빠르게 처리, 수치 계산

    SoC (System on a Chip) : 모바일 장치에 사용, CPU와 캐시와 DSP와 GPU와 codec과 메인 메모리가 한 칩에 있다.

     

    역할 분담(Exynos 990), 멀티코어(Snapdragon 865)

    computation 적은 프로세스를 담당하는 프로세서와 computation이 많은 프로세스를 담당하는 프로세서를 같이 사용하여 효율적으로 사용한다.

     

    Von Neumann architecture : 지금까지의 컴퓨터, 데이터 operation과 명령어 fetch를 동시에 할 수 없다. bottleneck이슈

    +) 미래 컴퓨터 : Neuromorphic architecture(인간 뇌 시냅스 모방, 분산처리), 양자 컴퓨팅


    💻 메모리

    - RAM (Random Access Memory)  

    Static RAM (SRAM) -> Cache : 비싸고 빠르다. poor density(6 transistors/bit)

    Dynamic RAM (DRAM) -> Main Memory : 싸고 느리다. transistor 1개, capacitor 1개-> high density (1 transistor/bit), 속도는 ns(나노세컨드)

     

    종류를 휘발성과 비휘발성 2가지로 나눌 수 있다. 

    Volatile(휘발성) : 전원나가면 데이터를 잃는다. SRAM과 DRAM

    Non-volatile (비휘발성) : 전원나가도 데이터를 기억한다. Flash Memory

     

    속도(빠른순서) : SRAM > DRAM > Flash Memory

     

    - Flash memory

    모바일 디바이스에 사용. 비휘발성. Floating Gate

    진동에 강해서 데드블락이 일어나지 않는다. (데드블락->데이터 날라감) 하드디스크에 비해 빠르고 튼튼하다.

    장점 : High density, Low access latency(지연시간 낮음->빠름), High shock/vibration(튼튼)

     

    특성

    1. Reading(~20us 마이크로세컨드) is faster than writing(~200us) : 비대칭적이다.

    2. No in-place Update : 내용이 있는 경우 지우고 써야한다.

    3. Limited endurance : 사용제약(한계)가 존재한다. 한계 다다르면 블록을 더 이상 사용X, wear leveling


    💻 디스크

    - Hard Disk Drive (HDD) 

    비휘발성(자기화, 앙페르법칙), 속도는 ms(밀리세컨드), Floppy disk, magnetic tape, credit card

    회전 이동시간(rotational latency), seek time(arm움직이는 기계적 소모시간) 등이 있다.

     

    - Solid State Disk (SSD) 

    flash memory기반으로 하드디스크 처럼 만든 것.

    FTL (Flash Translation Layer) : 인터페이스를 FTL을 이용한다. 하드디스크와 플래시메모리 특성을 반영하여 플래시메모리 특징 숨겨주고 HDD처럼 해주는 역할.

     

    - 비교 

    요소 시간 상대적 비율 비교
    프로세서 Cycle 0.5 ns (2GHZ)  1 sec
    Cache Access (SRAM) 2 ns 4 sec
    Memory Access (DRAM) 15 ns 30 sec
    SSD Access (보조기억장치) 50,000 ns (50 us) 27 hour
    Disk Access (보조기억장치) 7,000,000 ns (7 ms) 162 day

    나노 ns : 10^(-9)     마이크로 us : 10^(-6)    밀리 ms : 10^(-3)     

    메인메모리를 사물함에 비유, 캐시를 책상 서랍에 비유해서 생각. 책상 서랍은 사물함까지 이동할 필요 없이 작지만 편하게 접근 가능


    💻 프로세서 레지스터

    <어떤 레지스터가 어떻게 관여하는지 아는게 포인트>

     

    -  General purpose 레지스터 (일반 목적)

    메인 메모리 접근을 최소화하게 해준다. 중간의 결과나 데이터 값을 저장한다.

    Register file : 프로세서의 모든 일반 목적 레지스터를 담고있다. bank

     

    * 메모리가 있는데 레지스터가 필요한 이유 : 메모리 버스 접근 최소화 (임시저장)

     

    - Special purpose 레지스터 (특수 목적) 

    PC (program counter) : 다음에 fetch(반입)할 명령어의 주소를 담고있다.

    IR (instruction register) : 가장 최근에 fetch(반입)된 명령어를 담고있다. 실행될 명령어이다.

    PSW (Program status word) : (Privilege states 특권 상태, Condition code 듀얼모드 등)상태 정보를 저장한다. 

    MAR (Memory address register) : 메모리로부터 fetch될 명령어의 주소를 저장한다. 인터페이스

    MBR (Memory buffer register) : MAR의 주소가 가리키는 내용을 담고 있다.

    +) AC (Accumulator) : Temporary storage

     

    * fetch : PC의 주소로부터(메모리로부터) CPU의 IR레지스터에 놓는 것

     

    - ISA (Instruction Set Architecture) 

    SW와 HW 사이의 인터페이스를 정의. 명령어의 집합이다.

    instructionmachine states(Registers + Memory)를 정의한다.

    (ex. x86, x86-64, IA64, ARM)

     


    💻 명령 실행 과정

    - Instruction Format 명령어 형식
    ISA마다 다르며, opcode의 길이, operands(비연산자, 데이터)의 길이가 요소이다.

    Opcode : 수행될 명령어(ex. mov, add, jump)를 알려줌 (ex. 0001, 0010) -> 4bit라고 가정

    Operands : input, output data와 주소를 저장 -> 12bit라고 가정

    16비트 : 0~3 : Opcode  |   4~15 : Address

     

    - Instruction Fetch

    Instruction 단계 중 첫번째. 프로세서가 명령을 메모리로부터 fetch한다.

    PC가 다음 fetch될 명령어의 주소를 저장하고, fetch된 instruction이 IR로 load된다.

     

    - Instruction Decode and Execute

    Instruction 단계 중 두번째. 명령어를 해석하고 요구된 행동을 수행한다.

     

    - op코드 분류

    Data processing : 데이터 처리

    Control : if 같은거

    Processor-memory : load 같은거

    Processor-I/O : 디바이스와 통신하기 위한 I/O

    (ex. 0001 : load,  0010 : store,  0101 : add)

     

    - Instruction Cycle

    <어떤 레지스터가 관여하는지, machine state(레지스터+메모리)가 어떻게 바뀌는지 체크하기>

    Fetch from memory -> Decode -> Execute (필요하면 다른 피연산자 가져옴)-> Store result

     

    1-1. 프로그램이 로드되면 PC가 수행할 명령어의 주소를 저장한다. 

    1-2. MAR이 명령어의 주소를 저장한다. (Fetch 시작)

    2. MBR이 그 주소의 데이터를 저장한다. (Decode)

    2-2. IR이 그 데이터를 저장한다. (Decode)

    3-1. ALU레지스터가 명령어의 요구된 동작을 수행한다. (Execute)

    3-2. MARMBR이 필요한 다른 데이터를 AC에 가져온다. (Execute - Get otehr operands if necessary)

    4. 결과 저장 후 다음 명령어 수행

     

    ex. opcode가 1940 -> 1이 opcode, 940이 주소

    더보기
    instruction 수행하는 과정

     

    - PIC (Programmable Interrupt Controller)

    IRQ 컨트롤러라고도 불린다. Interrupt에 관여하는 하드웨어. 

    여러 디바이스들 통합관리하는 중간역할(디바이스가 CPU에 직접X). 

    I/O 디바이스는 interrupt request(IRQ) 라인을 가진다. 그 라인들이 PIC에 연결된다.

    IRQ는 interrupt vectors(번호)를 가지고, CPU에게 전송된다.

     

    기능 1) 디바이스의 request를 vector로 변환한다. 어떤 디바이스인지 번호로 식별한다. CPU로부터 ACK를 기다린다. (interrupt signal)

    기능 2) PIC 또는 CPU에서 interrupt를 mask(disable)할 수 있다. (프로그래머블하다) 우선순위 조정 가능

     

    * Interrupt : 디바이스와 통신하기 위한 하드웨어 매커니즘, 처리기의 utilization 향상목적, 일 다 끝나면 done 했다고 signal을 보내줌