3-1공부/운영체제

3. 컴퓨터 구조

KGW2027 2022. 4. 18. 21:30
728x90
반응형

컴퓨터 구조 ( Computer Architecture )

 - 필수장치 : CPU ( 명령어를 해석 및 실행하는 장치 ), Memory ( 주소를 통해 명령어 및 데이터를 저장하는 장치 )

 - 컴퓨터에 연결되는 모든 장치는 최종적으로 메인보드와 연결되며, 연결된 각 장치는 메인보드 내 버스를 통해 통신.

 폰-노이만 구조 : 프로그램은 저장장치에 파일형태로 저장되며, CPU에서 실행될려면 메인메모리에 적재되어야 한다.

  -> 데이터는 디스크에서 버스를 통해 메모리로 오고, 다시 버스를 통해 CPU로 오는 구조이다.

  -> Main memory가 유일한 작업 공간.

 

 

 병목현상

  - 읽어야할 데이터가 버스의 크기보다 큰 경우, 여러 클럭에 걸쳐 데이터를 읽는다.

   -> 메모리에 많은 입출력이 동시에 발생하면, 늦게 요청된 입출력은 앞의 입출력을 기다려야 한다.

   -> 메모리는 CPU보다 느리므로, 언제나 병목이 발생하게 된다.

 

Q. 병목현상을 극복하기 위해서...

  1. 물리적 설계

   - 메모리의 클럭을 높여 클럭 낭비를 줄인다. ( Double Data Rate, DDR )

   - 듀얼채널로 병렬화하여, 한 번에 더 많은 데이터에 접근한다.

   - CPU랑 물리적으로 가까운 위치에 둬서, 데이터 이동시간을 아낀다.

 

  2. 구조적 설계

   - 버퍼 ( Buffer, 데이터 전달간 임시 저장하는 장치 )를 도입한다.

   - 일정량의 데이터를 모아서 옮김으로써, 속도의 차이를 완화한다.

 

 

메모리 계층 구조

 - 캐시(Cache) : CPU에 대한 버퍼로, RAM보다 훨씬 빠른 속도를 가진다.

   -> 앞으로 사용될 것으로 예상되는 데이터를 미리 가져온다.

 

CPU 구성 요소

  - 산술 논리 연산장치 (ALU), 제어 장치 (Control Unit), 레지스터 (Register)

  - 실제 모든 연산 및 작업은 레지스터를 거쳐서 수행된다.

 

메모리 보호

 - 시분할 기법을 이용하여, 동시에 여러프로그램이 실행된다.

 - 이 때, 메모리가 보호되지 않으면 다른 작업이 영역을 침범하여 프로그램의 실행을 방해하거나, 데이터에 간섭할 수 있다.

  -> Segmentation (세그먼테이션) : 메모리의 시작 주소, 작업이 차지하는 메모리의 크기를 기록 후, 작업이 진행되는 동안 이 주소범위를 벗어나는지 하드웨어적으로 점검한다.

  -> 범위를 벗어나는 경우 인터럽트를 발생시켜 강제 종료 시킨다.

 - Paging 기법도 있다.

 

부팅 ( Booting )

 - 컴퓨터를 켰을 때, 운영체제를 메모리에 올리는 과정이다.

 - 부트로더 ( Boot Loader ) : 운영체제를 실행시켜주기 위한 프로그램 ( BIOS/UEFI )

 - 하드웨어 점검 후, 약속된 장치의 약속된 위치의 프로그램을 실행시킨다.

  -> MBR ( Master Boot Record ) : 디스크의 첫번째 섹터

  -> GPT ( GUID Partition Table ) : 데이터 손상등을 탐지가능 ( MBR은 불가 )

 

 폴링 ( Polling )

 - CPU가 직접 입출력장치에서 데이터를 입출력하는 방식

 - CPU가 외부 상태를 주기적으로 검사하며, 요청이 있다면 처리한다.

 - 폴링 주기 : 높을수록 응답속도가 향상되고, 낮을수록 실시간성이 저하된다.

 

 인터럽트 ( Interrupt )

 - 하드웨어 인터럽트와 소프트웨어 인터럽트가 있다.

 - 외부장치가 CPU를 사용해야 할 때, IRQ ( Interrupt ReQuest )를 전송한다.

 

 DMA ( Direct Access Memory )

 - CPU가 메모리를 읽고, 디스크를 쓰고 하는 작업의 반복으로 자원이 낭비된다.

  -> Cycle 2번당 한 번의 전송이 이뤄진다.

 - CPU 개입 없이, 메모리와 하드웨어간 데이터 전송이 이루어진다.

 - DMA Controller가 버스를 제어하며, CPU는 DMA에 데이터의 메모리 주소, 크기, 대상 등을 지시한다.

 - CPU는 DMA가 데이터 전송을 처리하는 동안 다른 프로세스를 처리할 수 있다.

 DMA 동작 모드

  - Cycle Stealing : 경쟁적 방법으로, CPU가 DMA에게 높은 버스 우선순위를 부여한다.

    -> CPU랑 DMA가 번갈아가면서 데이터를 보낸다.

  - Burst Mode : 배타적 방법으로, DMA가 버스 사이클을 독점하고 한 번에 여러 개의 워드를 전송한다.

  - Demand Transfer Mode : DMA가 CPU에게 일정 클럭수를 요구하고, 그만큼 전송한다.

 

  동시성 (Concurrency) : 동시에 실행되는 것 같아 보이는 것

   -> 싱글코어, 멀티쓰레드, 논리적 개념

  병렬성 ( Parallelism ) : 실제로 동시에 여러 개 실행하는 것.

   -> 멀티코어, 멀티 쓰레드, 물리적 개념

 

 파이프라이닝 (Pipelining)

 - 명령어를 여러 단계로 분할 후, 겹쳐서 실행한다.

 - 단계 간 상호 의존성이 없어야 한다.

  -> 독립적인 명령어, 앞의 결과가 뒤에 영향을 주지 않아야 한다.

 - 단계별 처리 속도가 일정해야 한다.

  -> 오랜 시간이 걸리는 작업 때문에 뒷 작업이 밀릴 수 있음. ( PL 버블 )

  -> 전체 작업 시간을 몇 단계로 나눠야할지 잘 따져봐야 한다.

  파이프라인 해저드 ( Pipeline Hazard )

  - 처리 시간이 일정하지 않거나, 처리 단계가 균형치 않을 때 발생하는 문제.

  1. 구조 해저드 : 프로세스의 자원이 부족할 때, 서로 다른 명령어가 같은 자원에 접근

  -> 충돌 발생 시, 한 명렁어가 1 클럭 쉬고 난 후 진행한다.

 

  2. 제어 해저드 : 분기 명령어에 의해 파이프라인 내 명령어들이 쓸모 없어짐

   -> 분기 명령어를 예측하거나 (Cache-hit), 미리 분기 파이프라인을 불러와 우선 실행한다.

 

  3. 데이터 해저드 : 이전 명령어의 결과를 기반으로 다음 명령어를 수행해야한다.

   -> 이전 명령어가 완료될 때 까지 대기한다.

 

 

 병렬처리

 - 슈퍼 스칼라 ( Super Scalar ) : 파이프라인 코어를 여러개 구성하여 복수의 명령어를 동시 실행한다.

 - 슈퍼 파이프라인 ( Super Pipeline ) : 파이프라인의 각 단계를 세분화 하여 한 클록 내에 여러 명령어를 실행한다.

 - 슈퍼파이프라인 슈퍼스칼라 : 여러개의 파이프라인을 구성, 단계 세분화, 한 클록 내에 여러 명령어를 동시 실행한다.

 - VLIW ( Very Long Instruction Word ) : CPU가 병렬처리 불가하면, 소프트웨어에서 병렬처리 한다.

  -> 컴파일 과정에서 컴파일러가 명령어 추출 후 하나로 압축한다.

 - SIMD ( Single Instruction Multiple Data ) : 하나의 명령어로 여러 개의 데이터를 처리한다.

 

 

기타...

 - 무어의 법칙 : CPU의 속도는 24개월마다 2배 빨라진다는 법칙으로, 옛날엔 적용됬으나 요즘은 X

 - 암달의 법칙 : 컴퓨터 시스템의 일부를 개선할 때, 전체 시스템에 미치는 영향과의 관계를 수식으로 나타냄.

728x90
반응형