티스토리 뷰

반응형

컴퓨터의 기본구성

하드웨어의 구성

컴퓨터의 구성

 필수장치 - 중앙처리장치(CPU), 메인메모리

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

 

용어 통일

 메인메모리 -> 메모리

 보조저장장치 -> 저장장치

 중앙처리장치 -> cpu

 

CPU와 메모리

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

 - 메모리 : 프로그램과 데이터를 저장하는 장소, 바이트단위로 분할되어 공간마다 주소로 구분

 

입출력장치

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

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

 

저장장치

 - 메모리보다 느리지만 용량이 큼

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

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

 - 종류 : 플로피디스크, 하드디스크, CD, DVD, 블루레이, USB, SSD 등

 

메인보드

 - CPU와 메모리 등 다양한 부품을 연결하는 커다란 판

 - 다양한 창치들을 버스로 연결함, 버스는 데이터가 지나다니는 통로

 - 그래픽카드, 사운드카드, 랜카드 등이 기본으로 장착되어 있고 성능을 향상시키기 위해 따로 장착하기도 함

 

폰노이만 구조

폰노이만 구조

 - CPU. 메모리 입출력장칙, 저장장치가 버스로 연결되어 있는 구조

 - 프로그램은 저장장치에 담겨있고 작업할때는 메모리에 불러와야만이 작업 가능

 

메모리가 아무리 커도 공간이 남으면 성능향상에 도움이 안됨

 

하드웨어 사양 관련 용어

클록(Clock)

 - CPU와 관련된 단위

 - 클록이 일정 간격으로 틱(tick)을 만들면 거기에 맞추어 CPU안의 모든 구성 부품이 작업함

 - 틱은 펄스(pulse) 또는 클록틱 이라고도 부름

 

헤르츠(Hz)

 - 클록틱이 발생하는 속도를 나타내는 단위

 - 클록틱 1초에 한번이면 1Hz, 1000이번 1kHz

 - 3.4GHZ는 1초에 34억번의 연산을 작업할 수 있음을 의미

 

시스템 버스

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

 

CPU 내부 버스

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

 

CPU와 메모리의 속도

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

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

 

CPU와 메모리

CPU의 구성과 동작

산술논리 연산장치

 - 데이터의 덧셈과 같은 산술연산과 AND OR같은 논리연산을 수행

 

제어장치

 - CPU에서 작업을 지시

 

레지스터

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

 -사용자 가시 레지스터

    - 데이터레지스터, 주소 레지스터

  -사용자 불가시 레지스터

     - 프로그램 카운터, 명령어 레지스터, 메모리 주소 레지스터, 메모리 버퍼 레지스터, 프로그램 상태 레지스터

 

버스의 종류와 특징

 - 제어버스 : 제어장치와 연결괸 버스로 CPU가 메모리와 주변장치에 제어신호를 보내기 위해 사용,

                    메모리와 주변장치에서도 작업완료나 오류 발생시 신호를 보내기위해 사용하기 때문에 양방향이다.

 - 주소버스 : 메모리 주소 레지스터와 연결된 버스,

                    메모리나 주변장치에 데이터를 읽거나 쓸때 위치 정보를 보내기 위해 사용하며 단방향이다

 - 데이터버스 : 메모리 버퍼 레지스터와 연결된 버스, 데이터의 이동이 양방향으로 이루어짐

 

버스의 대역폭

 - 한번에 전달할 수 있는 데이터의 최대크기

 - CPU가 한 번에 처리할 수 있는 데이터(워드 word)의 크기와 같음

 - 35bit CPU는 한번에 최대 32bit 처리 가능하고 이 경우 버스의 대역폭도 32bit

 

메모리의 종류와 부팅

메모리의 종류

 - 램 : 휘발성(DRAM, SRAM, SDRAM), 비휘발성(플래시 메모리, FRAM, PRAM)

 - 롬 : 마스크롬, PROM, EPROM//한번쓰면 못바꿈

 

휘발성 메모리

 - DRAM : 저장된 데이터가 일정 시간 뒤에 사라지므로 다시 재생 시켜야함

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

 - SDRAM : 클록틱이 발생할 때마다 데이터를 저장하는 동기 DRAM

 

비휘발성 메모리

 - 플래시메모리 : 디지털 카메라, MP3, USB 등 전력 없이도 데이터를 보관하는 저장장치

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

 

롬의 종류

 - 마스크롬 : 데이터를 지우거나 쓸 수 없음// 처음부터 데이터가 들어있음

 - PROM : 데이터를 한번만 저장할 수 있음(전용기계 사용)

 - EPROM : 데이터를 여러번 저장할 수 있음

 

메모리 보호의 필요성

 - 현대에는 시분할 기법을 사용해 여러 프로그램을 동시에 실행하므로 사용자 영역이 여러개의 작업 공간으로 나뉘어있음

 - 메모리가 보호되지 않으면 어떤 작업이 다른 작업의 영역을 침범하여 프로그램을 파괴하거나 데이터를 지울 수 있으며,

    최악의 경우 운영체제의 영역을 침범해 시스템이 멈출 수 있음

 

메모리 보호방법

 1) 작업의 메모리 시작주소를 경계 레지스터에 저장후 작업

 2) 작업이 차지하는 메모리크기, 즉 마지막주소까지의 차이를 한계 레지스터에 저장

 3) 작업이 진행되는 동안 두 레지스터의 주소 범위를 벗어나는지 하드웨어적으로 점검 //소프트웨어적으로 가능하나 느림

 4) 두 레지스터 값을 벗어나면 오류관련 인터럽트 발생

 5) 메모리 영역에 벗어나 발생한 인터럽트의 경우 운영체제가 해당 프로그램을 강제 종료

 

부팅

 - 컴퓨터 실행시 운영체제를 메모리에 올리는 과정

 - BIOS(Basic Input Output Sysyem) 에서 하드웨어 점검, 메모리에 부트스트랩 코드를 올려서 실행

 

컴퓨터의 성능향상 기술

버퍼

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

 - 일정량의 데이터를 모아 옮겨 속도의 차이를 완화함

 

스풀

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

 - 예) 스풀러

     - 인쇄할 내용을 순차적으로 출력하는 소프트웨어로 출력된 명령을 내린 프로그램과 독립적으로 동적

     - 인쇄물이 완료될 때까지 다른 인쇄물이 끼어들 수 없어 프로그램 간에 배타적임

 

캐시

캐시

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

 - 필요한 데이터를 모아 한꺼번에 저장하는 버퍼의 일종으로 CPU가 앞으로 사용할 것으로 예상되는것(그근처 데이터들)을 미리 가져옴

   //기존에 있던것을 가져오되 기존 데이터가 사라지지않고 복사하는개념, 근처 데이터 불러오는게 지역성이라는 개념

 - CPU는 메모리에 접근해야 할 때 캐시를 먼저 방문하여 데이터가 있는지 찾아봄

 

캐시의 구조

 - 캐시히트 : 캐시에서 원하는 데이터를 찾는것으로 그 데이터를 바로 사용

 - 캐시미스 : 원하는 데이터가 캐시에 없으면 메모리로 가서 데이터를 찾음

 - 캐시적중률 : 캐시히트가 되는 비율로 일반적인 컴퓨터의 캐시적중률은 약 90%

 

즉시 쓰기

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

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

 - 메모리에 최신값이 유지되기 때문에 데이터를 잃어버리지 않음

 

지연쓰기

 - 캐시에 데이터가 변경되면 메모리에 바로 반영하지 않고 변경된 내용을 모아서 주기적으로 반영

 - 카피백이라고도 함

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

 - 메모리와 캐시된 데이터 사이의 불일치가 발생할 수 있음

 

L1캐시와 L2캐시

 - 캐시는 명령어와 데이터 구분없이 자료를 가져오는 일반캐시와 명령어와 데이터를 구분하여 가져오는 특수캐시로 구분됨

 

저장장치의 계층구조

저장장치의 계층구조

 - 개념 : 속도가 빠르고 비싼 저장장치를 CPU 가까이 두고, 싸고 용량많은 저장장치를 반대에 배치해 속도와 용량을 모두 확보하는 방법

 - 이점 : 메모리에서 작업한 내용을 용량이 큰 저장장치에 영구적으로 저장 가능

 - 레지스터 <-> 캐시 <-> 메모리 <-> 저장장치

 

폴링 방식

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

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

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

 

인터럽트 방식

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

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

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

 

인터럽트

인터럽트

 - 입출력 관리자가 CPU에 보내는 신호

 

인터럽트 번호

 - 많은 주변장치 중 어떤 것의 작업이 끝났는지 CPU에 알려주기 위해 사용하는 번호

 

인터럽트 벡터

 - 여러개의 입출력 작업을 한꺼번에 처리하기 위해 여러개의 인터럽트를 하나의 배열로 만든것

 

인터럽트 방식의 동작 과정

 1) CPU가 입출력 관리자에게 입출력 명령을 보냄

 2) 입출력 관리자는 명령받은 데이터를 메모리에 가져다 놓거나 메모리의 데이터를 저장장치로 옮김

 3) 데이터 전송이 완료되면 입출력 관리자는 CPU에 완료신호를 보냄

 

직접 메모리 접근

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

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

 

메모리 매핑 입출력(MMIO)

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

 

사이클 훔치기

 - CPU와 직접 메모리 접근이 동시에 메모리에 접근 하면 보통 CPU가 메모리 사용권한을 양보

 - CPU의 작업속도보다 입출력장치의 속도가 느리기때문에 직접 메모리 접근에 양보하는것

 

병렬처리

병렬처리의 개념

병렬처리의 개념

 - 동시에 여러개의 명령을 처리

 

파이프라인 기법

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

 

슈퍼스칼라 기법

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

 

상호의존성이 없어야 병렬처리가 가능

 - 각 명령이 서로 독립적이고 앞의 결과가 뒤의 명령에 영향을 미치지 않아야함

 

각 단계의 시간을 일정하게 맞춰야 병렬처리가 원만하게 이루어짐

 - 오랜시간이 걸리는 작업 탓에 진행이 전반적으로 밀려 작업시간이 늘어나므로 단계별 시간차이가 크면 병렬처리의 효과가 떨어짐

 

전체 작업시간을 몇 단계로 나눌지 잘 따져보아야함

 - 작업을 너무 많이 나누면 각 단계마다 작업을 이동하고 새 작업을 불러오는데 시간이 너무 많이 걸려서 오히려 성능이 떨어짐

 

CPU에서 명령어가 실행되는 과정

 - 명령어 패치 -> 명령어 해석 -> 실행 -> 쓰기

 

파이프라인 기법

 - CPU의 사용을 극대화 하기 우해 명령을 겹쳐서 실행하는 방법

 

파이프라인의 위험

 - 데이터의 위험

    - 데이터의 의존성 때문에 발생하는 문제

    - 데이터 A를 필요로 하는 두번째 명령어는 앞의 명령어가 끝날 때까지 동시에 실행되어서는 안됨

    - 데이터 위험은 파이프라인의 명령어 단계를 지연하여 해결

 - 제어위험

    - 프로그램카운터 값을 갑자기 변화시켜 발생하는 위험

    - goto문 처럼 다른 문장으로 이동시키게 되면 동시에 처리하고 있는 명령어 들이 쓸모없어짐

    - 제어위험은 분기 예측이나 분기 지연 방법으로 해결

 - 구조위험

    - 서로다른 명령어가 같은 자원에 접근하려 할때 발생하는 문제

    - 두 명령어가 같은 레지스터를 사용하려하면 출돌 -> 해결하기 어렵다고 알려져있음

 

슈퍼스칼라 기법

 - 파이프라인을 처리할 수 있는 코어를 여러개 구성하여 복수의 명령어가 동시에 실행되도록 하는 방식

 

슈퍼파이프라인 기법

 - 파이프라인의 각 단계를 세분하여 한 클록 내에 여러 명령어를 처리

 - 한 클록 내에 여러 명령어를 실행하면 다음 명령어가 빠른 시간 안에 시작 될 수 있어 병렬 처리 능력이 높아짐

 

슈퍼파이프라인 슈퍼스칼리 기법

 - 슈퍼파이프라인 기법을 여러 개의 코어에서 동시에 수행하는 방식

    //앞에꺼 다합친거임

 

VLIW기법(Very Long Instruction Word)

 - CPU가 병렬처리를 지원하지 않을 경우 소프트웨어적으로 병렬처리 하는 방법

 - 동시에 수행 가능한 명령어들을 컴파일러가 추출하고 하나의 명령어로 압축하여 실행

 - 앞에 방법들에 비해 동시에 처리하는 명령어의 수가 적음

 - 컴파일 시 병렬처리가 이루어짐

 

무어의 법칙

 - CPU의 속도가 24개월마다 2배 빨라짐

 - 초기의 CPU에만 적용되며 지금은 아님

 

암달의 법칙

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

 - 이 법칙에 따르면 주변장치의 향상 없이 CPU의 속도를 2GHz에서 4GHz로 늘리더라도 컴퓨터의 성능이 2배로 빨라지지 않음

 

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함