일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 함수형 프로그래밍
- ios
- cpp02
- 외판원순회
- 백준
- 정렬
- 부동소수점
- 앱심사
- 유전학알고리즘
- 카카오테크캠퍼스
- 배낭문제
- 판다스
- 데이터과학
- 컴퓨터구조
- 알고리즘
- 개발
- 대외활동
- 분할과정복
- 안드로이드스튜디오
- 컴퓨터공학과
- 백준2098
- 프로그래밍 언어론
- 코틀린
- 데이터 과학
- datapath
- 컴퓨터알고리즘
- H-모빌리티 클래스
- 탐색
- 그리디
- 리액트네이티브
- Today
- Total
minkylee
[컴퓨터구조] 컴퓨터 추상화 본문
컴퓨터 구조 분야의 일곱 가지 위대한 아이디어
지난 60년의 컴퓨터 역사 가운데 컴퓨터 구조 분야에서 발명된 7개의 위대한 아이디어.
설계를 단순화하는 추상화
컴퓨터 설계자와 프로그래머는 자원의 수가 급격히 증가함에 따라 설계 시간이 길어지는 것을 방지하기 위해서 생산성을 높이기 위한 기술을 개발해야 했다. 하드웨어와 소프트웨어 생산성을 높이는 핵심 기술 중 하나는 여러 수준에서 설계를 명시하는 추상화
를 사용하는 것이다. 하위 수준의 상세한 사항을 안 보이게 함으로써 상위 수준 모델을 단순화한다.
자주 생기는 일을 빠르게
자주 생기는 일을 빠르게 만드는 것이 드물게 생기는 일을 최적화 하는 것보다 성능 개선에 도움이 된다. 자주 생기는 일은 드물게 생기는 일보다 단순하여 성능을 개선하기 쉬운 경우가 많다. 자주 생기는 일이 무엇인지 미리 알고 있다는 것을 가정하고 있지만, 실제로는 세심한 실험과 측정을 거쳐야만 알 수 있다.
병렬성을 통한 성능 개선
컴퓨터 설계자들은 작업을 병렬적으로 수행하여 성능을 높이는 설계를 해왔다.
파이프라이닝을 통한 성능 개선
컴퓨터 구조에서 많이 볼 수 있는 병렬성의 특별한 형태이다. 파이프들은 파이프라인의 각 단계에 해당된다.
예측을 통한 성능 개선
무언가를 하려면 앞날을 예측해야한다. 예측이 틀렸을 때 이를 복구하는 비용이 비싸지 않고 예측이 맞을 확률이 비교적 높은 경우, 확실해질 때까지 기다리는 것보다 추측해서 일단 시작하는 것이 평균적으로 빠를 수 있다.
메모리 계층구조
최상위 계층에는 가장 빠르고, 가장 작고, 비트당 가격이 제일 비싼 메모리를 사용하고, 최하위 계층에는 느리지만 크고 비트당 가격이 제일 싼 메모리를 사용한다.
여유분을 이용한 신용도 개선
컴퓨터는 빠르기만 해서는 안 되고 신뢰할 수 있어야 한다. 모든 물리 소자는 장애가 발생할 수 있으므로 장애가 난 소자를 대치할 수 있도록 여유분을 준비하면 컴퓨터의 신용도를 개선할 수 있다.
프로그램 밑의 세계
컴퓨터 하드웨어는 아주 단순한 저수준의 명령어를 실행할 수 있다. 복잡한 응용에서 출발해서 단순한 명령어까지 내려가려면 높은 수준의 작업을 단순한 컴퓨터 명령어로 번역 또는 해독하는 여러 겹의 소프트웨어가 필요하다. -> 이 것을 추상화
라고 한다.
- 응용 프로그램 : 가장 바깥쪽에 위치
- 시스템 소프트웨어 : 하드웨어와 응용 소프트웨어 사이에 존재
- 운영체제 : 사용자 프로그램과 하드웨어 간의 인터페이스 역할을 하면서 각종 서비스와 감독 기능 제공
- 기본적 입출력 작업의 처리
- 보조기억장치 및 메모리 할당
- 컴퓨터를 동시에 사용하는 여러 응용들 간의 컴퓨터 공유 방법 제공
- 컴파일러 : 상위 수준 언어로 작성 된 프로그램을 하드웨어가 실행할 수 있는 명령어로 번역하는 중요한 일
상위 수준 언어에서 기계어까지
컴퓨터는 우리의 지시에 따라서 일하는 종이라 볼 수 있는데 이 지시를 명령어(instruction)이라고 한다.
명령어는 컴퓨터가 이해할 수 있는 비트들의 집합에 불과하므로, 이것도 역시 숫자로 생각할 수 있다.
1001010100101110
// 이 비트들이 어떤 컴퓨터에게는 두 숫자를 더하라는 명령이 된다.
어셈블러 : 기호로 된 명령어(어셈블리 언어)를 이진수 프로그램으로 번역하는 프로그램
add A, B 1001010100101110 // 어셈블러가 위의 명령어를 아래의 이진수로 바꾼다.
하드웨어
컴퓨터의 고전적 구성 요소 다섯 가지는 입력, 출력, 메모리, 데이터패스, 제어 유닛이다. 이 중 데이터패스와 제어 유닛을 합쳐 프로세서라고 부르기도 한다.
- 디스플레이
- 터치스크린
- 집적회로(intergrated curcuit, IC) 또는 칩(chip) : 수천만 개의 트랜지스터가 결합된 부품
- CPU (프로세서) : 컴퓨터의 핵심 부분, 숫자를 더하거나 검사하고 입출력 장치에 신호를 보내 활성화하는 일을 한다.
- 데이터패스 : 산술연산을 수행하는 프로세서 구성요소
- 제어 유닛 : 명령어가 뜻하는 바에 따라 데이터패스, 메모리, 입출력 장치가 할 일을 지시한다.
- 메모리 : 실행 중인 프로그램과 프로그램이 필요로 하는 데이터를 기억한다. DRAM칩으로 구성
- DRAM (dynamic random access memory) 여러 개를 한데 묶어서 프로그램의 명령어와 데이터를 기억하는 데 사용함 RAM이란 말은 자기 테이프 같은 순차 접근 메모리와는 반대로 메모리의 어떤 부분을 읽든지 같은 시간이 걸린다는 것을 의미한다.
- 캐시 메모리 : DRAM 의 버퍼 역할을 하는 작고 빠른 메모리 SRAM 이라는 다른 메모리 기술을 이용
여러 계층의 추상화 중에서 가장 중요한 것은 하드웨어와 하위 계층 소프트웨어 간의 인터페이스인
명령어 집합 구조
이다. 이렇게 인터페이스를 추상화함으로써 같은 소프트웨어를 실행하지만 가격과 성능이 다른 여러 가지 컴퓨터를 구현 할 수 있다.
메인 메모리
컴퓨터 안에 기억된 내용은 전원이 끊어지면 다 없어진다. 컴퓨터 내부의 메모리는 휘발성 메모리이기 때문이다. 반면에 DVD에 기록된 영화는 DVD 플레이어의 전원을 꺼도 지워지지 않는다. DVD는 비휘발성 메모리 기술의 일종이기 때문이다.
- 메인 메모리 : 실행 중인 프로그램을 저장하는 휘발성 메모리. 오늘 날의 컴퓨터는 대개 DRAM을 사용
- 보조 기억 장치 : 실행 중이 아닌 프로그램과 데이터를 저장하는 비휘발성 메모리
- 자기 디스크 : 하드 디스크라고도 한다. 보조 기억 장치의 주종
- 플래시 메모리 : 개인 휴대용 기기는 크기와 모야의 제약 때문에 자기 디스크 대신 비휘발성 반도체 메모리인 플래시 메모리를 사용, 100,000번 내지 1,000,000번 쓰기를 한 후에는 못쓰게 된다.
컴퓨터 간의 통신
컴퓨터 네트워크를 통해서 컴퓨터 전체가 서로 연결되어 사용자의 계산 능력을 확장시켜 준다.
- 통신 : 컴퓨터끼리 고속으로 정보를 주고받을 수 있다.
- 자원 공유 : 컴퓨터마다 입출력 장치를 따로따로 갖출 필요 없이 네트워크상의 모든 컴퓨터가 입출력 장치를 공유할 수 있다.
- 원격 접근 : 컴퓨터들을 연결하면 멀리 떨어져 있는 컴퓨터도 쉽게 이용할 수 있다.
- LAN (근거리 네트워크) : 지리적으로 제한된 지역에서 데이터를 주고받도록 설계된 네트워크
- WAN (원거리 네트워크) : 대륙 전체를 연결할 수 있는 수백 km 이상의 네트워크
프로세서와 메모리 생산 기술
- 트랜지스터 : 전기로 제어되는 온/오프 스위치, 집적 회로는 수십, 수백 개의 트랜지스터를 칩 하나에 집적시킨 것이다. 트랜지스터 숫자가 수백 개에서 수백만 개까지 늘어난 경이적인 증가를 표현하기 위해서
초대규모집적회로
라는 용어를 만들었다.
집적회로 제조 공정은 칩 가격에 심각한 영향을 미치기 때문에 컴퓨터 설계자에게도 중요한 문제이다.
여러 공정 중 어느 한 부분에서라도 흠집이 생기면 웨이퍼의 그 부분은 못 쓰게 된다. 이러한 결함
때문에 완벽한 웨이퍼를 만든다는 것은 거의 불가능하다. 불완전성에 대처하기 위해 한 웨이퍼에 독립적인 컴포넌트를 여러 개 만들고 웨이퍼를 컴포넌트별로 자르는데 이것을 다이
또는 칩이라고 한다.
이렇게 여러 조각으로 나누면 웨이퍼에 결함이 생겼을 때 웨이퍼 전체를 버리는 대신 해당 다이만 버리면 된다. -> 수율
- 수율 : 웨이퍼 상의 전체 다이 중 양호한 다이의 비율
'CSE > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 컴퓨터 산술연산 (0) | 2024.04.19 |
---|---|
[컴퓨터구조] Memory Addressing (0) | 2024.04.19 |
[컴퓨터구조] RISC-V 명령어의 타입, Procedure Calling (0) | 2024.04.17 |
[컴퓨터구조] 하드웨어 연산 (0) | 2024.04.16 |
[컴퓨터구조] 시스템의 성능 (0) | 2024.04.05 |