일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리버싱 스터디
- rev-basic 풀이
- 안드로이드 adb
- 안드로이드 모바일 앱 모의해킹
- 위니브
- 제주코딩베이스캠프
- 드림핵 리버싱
- 리버싱
- 자바스크립트강의 후기
- 안드로이드 리버싱
- 드림핵 리버싱 풀이
- 제주ICT
- 자바스크립트 강의 추천
- 안드로이드 adb start-server
- 자바스크립트
- 리버싱핵심원리
- 강의 체험단 1기
- 티스토리챌린지
- adb 옵션
- 리버싱 초보
- 더오름
- dreamhack reversing
- 리버싱 입문
- 리버싱 플래그
- 인프런 강의 추천
- 드림핵 플래그
- 리버싱 핵심 원리
- 자바스크립트 강의
- 오블완
- adb
- Today
- Total
해보자고
포스트 PC 시대, 프로그램 성능의 이해 본문
1. 전통적인 컴퓨터 응용 분야의 종류들
1) 개인용 컴퓨터(personal computer, PC)
- 제3자(third-party) 소프트웨어를 실행하기 위해 주로 사용됨.
+) third-party 소프트웨어: 하드웨어 메이커와 관계없는 제3의 프로그래머가 만든 프로그램.
2) 서버(server)
- 네트워크를 통한 접근만 가능
- 대형 작업 수행에 이용
- PC와 같은 기술로 제작되지만, 연산 및 입출력 용량의 확장성이 훨씬 큼.
3) 수퍼컴퓨터(supercomputer)
- 처리 능력 중 가장 좋은 성능의 컴퓨터
- 컴퓨터 시장 전체 판매 중 비중이 낮음.
4) 임베디드 컴퓨터
- 컴퓨터 시장 전체 판매 중 비중이 가장 높음
- 사물인터넷을 포함하는 경우가 많음
- 특정 응용 분야 목적의 컴퓨터
- redundancy 기술로 고장 감내 기능을 구현하는 경우가 많음.
2. 포스트 PC 시대
- 포스트 PC: 언제 어디서나 인터넷에 접속할 수 있는 정보 기기(주로 PC시대 이후)
1. 개인용 컴퓨터(PC)가 개인 휴대용 기기(PMD)로 대치되고 있다.
- PMD(Personal mobile Device)란 무선으로 인터넷에 연결되는 소형 기기로 예시로는 스마트폰이 있다.
2. 서버가 창고 규모의 컴퓨팅(WSC, warehouse-scale computing)인 데이터센터를 이용하는 클라우드 컴퓨팅(cloud computing) 으로 전환되고 있다.
- 클라우드 컴퓨팅 중 SaaS와 같이 클라우드 내에서 가볍게 소프트웨어를 실행할 수 있다.
3. 프로그램 성능의 이해
하드웨어 or 소프트웨어 구성 요소 | 성능에 미치는 영향 |
알고리즘 | 소스 프로그램 문장 수와 입출력 작업 수를 결정 |
프로그래밍 언어, 컴파일러, 컴퓨터 구조 | 각 소스 프로그램 문장에 해당하는 기계어 명령어 수 결정 |
프로세서와 메모리 시스템 | 명령어의 실행 속도 결정 |
입출력 시스템(하드웨어 및 운영체제) | 입출력 작업의 실행 속도 결정 |
< Computer organization and design (risc-v edition). David A. Patterson / John L. 10p >
4. 스스로 점검하기
1. 매년 판매되는 임베디드 프로세서의 수는 PC는 물론 포스트 PC 프로세서의 수보다도 훨씬 많다. 당신의 경험상 이를 확인하거나 부인할 수 있는가? 당신 집안에 있는 임베디드 프로세서를 세어 보라. 집 안에 있는 전통적인 컴퓨터의 수와 비교하면 어떠한가?
- 확인할 수 있다. 냉장고, 보일러, 인터폰, 넷카메라 등을 집안에서 확인해볼 수 있고, 이외에도 다양한 임베디드 프로세서가 존재할 것이다. 그리고 이는 집 안에 있는 데스크탑 컴퓨터, PC 에 비하면 훨씬 많다는 것을 알 수 있다. 주로 가격이 저렴하고, 꼭 필요한 기능의 집약체인 임베디드 프로세서의 특성상 훨씬 많고 다양한 것을 확인해볼 수 있다.
2. 소프트웨어와 하드웨어 모두 프로그램 성능에 영향을 미친다. 다음 각각이 성능의 병목이 되는 경우의 예를 제시하라.
1) 선택된 알고리즘
- 알고리즘의 경우 시간 복잡도를 이야기하여 프로그램 성능에 대해 이야기해볼 수 있다.
-> 로그 시간 알고리즘 (O(log n)) > 선형 시간 알고리즘 (O(n)) > 다항 시간 알고리즘 (O(n^k))
(이가 이해하기 어려우면 포스팅 참고)
2) 프로그래밍 언어 또는 컴파일러
- 간단하게 python과 C/C++ 언어를 비교해보더라도 저수준 언어인 C/C++는 python에 비해 훨씬 빠른 속도의 실행 시간을 갖고 있다.
3) 운영체제
- CPU의 경우 더 좋은 CPU가 연산 처리 및 명령어의 해석 및 동작이 빠르다. 반대로 더 예전, 안 좋은 CPU를 탑재한 컴퓨터는 컴퓨터의 동작 처리가 느릴 수 있다.
4) 프로세서
- 프로세서 자체의 성능이 좋지 않거나, 프로그램이 단일 코어에서 사용되는 경우 발생할 수 있다. 이는 병렬 처리에서의 제한이 존재하기 때문에 멀티스레드 또는 병렬 알고리즘이 사용되지 않는 경우, 프로세서의 병목 현상이 발생할 수 있다.
5) 입출력 시스템 및 입출력 장치
- 대용량 데이터를 입력 혹은 출력할 때 병목 현상이 나타날 수 있다. 대용량 데이터를 입력, 출력할 때 입출력 버스, 입출력 장치, 디스크 등이 사용되는데 입출력 장치, 디스크의 처리 속도 등이 늦거나, 입출력 버스가 협소할 때 병목현상이 나타날 수 있다.
해당 스터디는 Computer organization and design (risc-v edition). David A. Patterson / John L. Hennesy 책을 활용하여 공부하고 있습니다.
'스터디 > 컴퓨터 구조' 카테고리의 다른 글
RISC vs CISC (0) | 2024.05.06 |
---|---|
Machine code (0) | 2024.05.06 |