mun dev

[CS 정리] 2. 컴퓨터의 구조와 성능 향상 본문

CS/운영체제

[CS 정리] 2. 컴퓨터의 구조와 성능 향상

mndev 2022. 8. 26. 16:53

■ 하드웨어의 구성

💡  컴퓨터의 구성 

 - 필수장치: 중앙처리장치, 메인메모리(대부분의 작업이 이루어짐)

 - 주변장치: 입력장치, 출력장치, 저장장치 

 

💡 CPU와 메모리 

- CPU: 명령어를 해석하여 실행하는 장치로 인간으로 치면 두뇌에 해당

- 메모리: 작업에 필요한 프로그램과 데이터를 저장하는 장소 

 

 

💡 입출력장치 

- 입력장치: 외부의 데이터를 컴퓨터에 입력하는 장치 

- 출력장치 : 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력하는 장치  

 

💡 저장장치 

- 매모리보다 느리지만 저렴하고 용량이 큼

- 전원의 온·오프와 상관없이 데이터를 영구적으로 저장

- 느린 저장장치를 사용하는 이유는 저장 용량에 비해 가격이 싸기 때문 

 

 

💡 폰 노이만 구조 

- 프로그램은 하드디스크와 같은 저장장치에 담겨 있으나, 폰노이만 구조의 가장 큰 특징은 저장장치에서 바로 실행할 수 없고, 메모리로 가지고 올라와야지만 실행이 가능함

 

- 모든 프로그램은 메모리에 올라와야 실행할 수 있다 

 

💡 하드웨어 사양 관련 용어 

▶ 시스템 버스 

  메모리와 주변장치를 연결하는 버스로, FSB(Front-Side Bus) 전면 버스라고 함

 

▶ CPU 내부 버스 

 CPU내부에 있는 장치를 연결하는 버스로. BSB(Back Side Bus)후면 버스라고 함

 

▶ CPU와 메모리의 속도 

- CPU는 CPU 내부 버스(BSB)의 속도로 작동하고 메모리는 시스템 버스(FSB)의 속도로 작동

- 두 버스의 속도차이로 인하여 작업이 지연되며, 이 문제를 캐쉬로 해결 

 

 

■ CPU의 구성과 동작

💡 산술논리 연산장치

데이터의 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 산술 연산과 AND, OR과 같은 논리 연산을 수행

 

💡 제어장치 

CPU에서 작업을 지시

 

💡 레지스터 

CPU내에 데이터를 임시로 보관

 

 

💡 주요 레지스터의 종류와 특징

레지스터 특징
사용자 가시 레지스터  데이터레지스터(DR)  CPU가 명령어를 처리하는데 필요한 일반 데이터를 임시로 저장하는 범용 레지스터 
주소 레지스터(AR) 데이터 또는 명령어가 저장된 메모리의 주소를 저장 
사용자 불가시 레지스터  프로그램 카운터 (PC)  다음에 실행할 명령어의 위치정보( 코드의 행 번호, 메모리 주소)를 저장
명령어 레지스터(IR) 현재 실행 중인 명령어를 저장
메모리 주소 레지스터(MAR) 메모리 관리자가 접근해야 할 메모리의 주소를 저장
메모리 버퍼 레지스터(MBR) 메모리 관리자가 메모리에서 가져온 데이터를 임시로 저장
프로그램 상태 레지스터(PSR) 연산결과(양수, 음수)를 저장 

 

 

💡 주요 레지스터의 종류와 특징

버스 특징
제어버스 제어장치와 연결된 버스로, CPU가 메모리와 주변장치에 제어신호를 보내기 위해 사용한다. 매모라와 주변장치에서도 작업이 완료되거나 오류가 발생하면 제어신호를 보내기 때문에 양방향이다 .
주소버스  메모리 주소 레지스터와 연결된 버스로, 메모리나 주변장치에 데이터를 읽거나 쓸 때 위치 정보를 보내기 위해 사용하며 단방향이다.
데이터 버스 메모리 버퍼 레지스터와 연결된 버스로, 데이터의 이동이 양방향으로 이루어진다. 

 

 

■ 메모리의 종류와 부팅

💡 휘발성 메모리

▶ DRAM(Dynamic RAM)

    저장된 0과 1의 데이터가 일정 시간이 지나면 사라지므로 일정시간 마다 다시 재생시켜야함

 

▶ SRAM(Static RAM)

    전력이 공급되는 동안에는 데이터를 보관할 수 있어 재생할 필요가 없음

 

▶ SDRAM(Synchronous Dynamic Random Access Memory)

     클록틱(펄스)가 발생할 때 마다 데이터를 저장하는 동기 DRAM

 

 

💡 비휘발성 메모리

▶플래시 메모리(Flash Memory)

    디지털 카메라, MP3 플레이어, USB 드라이버 같이 전력이 없어도 데이터를 보관하는 저장장치 

 

▶ SSD

    가격이 비싸지만 빠른 데이터 접근 속도, 저전력, 내구성 때문에 많이 사용 

 

💡 롬의 종류 

▶ 마스크 롬 (Mask ROM)

  데이터를 지우거나 쓸 수 없음

 

▶ PROM(Programmable ROM)

    전용 기계를 이용하여 데이터를 한 번만 저장할 수 있음

 

▶ EPROM(Erasable Programmable ROM)

    데이터를 여러 번 쓰고 지울 수 있음 

 

 

■ 버퍼 

- 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 하는 장치

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

 

💡 스풀

- CPU와 입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼

 

■  캐시 

- 매모리와 CPU간의 속도 차이(BSB와 FSB의 속도 차이)를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시장소

- 필요한 데이터를 모아 한꺼번에 전달하는 버퍼의 일종으로  CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다 놓음 

 

💡 즉시쓰기(Write through)

- 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 방식

- 메모리와의 빈번한 데이터 전송으로 인해 성능이 느려짐 

- 메모리의 최신 값이 항상 유지되기 때문에 갑작스러운 정전에도 데이터를 잃어버리지 않음

 

💡 지연쓰기(Write back)

- 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 것이 아니라 변경된 내용을 모아서 주기적으로 반영하는 방식

- 카피백이라고도 함 

- 메모리와 데이터 전송 횟수가 줄어들어 시스템의 성능을 향상할 수 있음

 

 

 

■  저장장치의 계층 구조 

💡 개념 

- 속도가 빠르고 값이 비싼 저장장치를 CPU 가까운 쪽에 두고, 값이 싸고 용량이 큰 저장장치를 반대쪽에 배치하여 적당한 가격으로 빠른 속도와 큰 용량을 동시에 얻는 방법

 

💡 이점 

- CPU와 가까운 쪽에 레지스터나 캐시를 배치하여  CPU가 작업을 빨리 진행할 수 있음

- 메모리에서 작업한 내용을 하드 디스크와 같이 저렴하고 용량이 큰 저장장치에 영구적으로 저장할 수 있음 

 

 

💡 저장장치의 계층구조 

 

 

■  인터럽트 

💡 폴링방식(polling)

- CPU가 직접 입출력 장치에서 데이터를 가져오거나 내보내는 방식 

- CPU 입출력장치의 상태를 주기적으로 검사하여 일정한 조건을 만족 할 때 데이터를 처리 

- CPU가 명령어 해석과 실행이라는 본래 역할 외에 모든 입출력까지 관여해야 하므로 작업 효율이 떨어짐

 

💡 인터럽트 방식(Interrupt)

- 입출력 관리자가 대신 입출력을 해주는 방식

- CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로써 시스템의 효율을 높임

- 데이터의 입출력이 이루어지는 동안 CPU가 다른 작업을 할 수 있음 

 

 

💡 직접 메모리 접근(Direct Memory Access, DMA)

- 입출력 관리자가 CPU의 허락 없이 메모리에 접근할 수 있는 권한

- 메모리는 CPU의 작업 공간이지만, 데이터 전송을 지시받은 입출력 관리자는 직접 메모리 접근 권한이 있어야만 작업을 처리할 수 있음 

 

 

💡 메모리 매핑 입출력(Memory Mapped I/O, MMIO)

- 메모리의 일정 공간을 입출력에 할당하는 기법 

 

 

■  병렬 처리 

💡 병렬 처리(Parallel processing)

- 동시에 여러 개의 명령을 처리하여 작업의 능률을 올리는 방식 

 

▶ 파이프라인 기법 

 하나의 코어에 여러 개의 스레드(thread)를 이용하는 방식

 

▶ 슈퍼스칼라 기법 

듀얼 코어 CPU를 이용해 2개의 작업을 동시에 처리하는 방식