일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 베스트 앨범
- 프로그래머스
- 표 편집
- Call-by-Value
- sw expert academy
- 다단계 칫솔 판매
- 컴퓨터 구조
- 코테
- java
- 구현
- 토마토
- 메뉴 리뉴얼
- 순열
- swea
- 기능 개발
- 조합
- 오블완
- 자바
- Comparable
- 고정소수점
- 운영 체제
- 괄호 회전하기
- 도둑질
- Comparator
- 데이터
- 요세푸스
- 부동소수점
- 백준
- 컴퓨터구조
- 티스토리챌린지
- Today
- Total
감자는 아직 꿈을 꾼다.
[컴퓨터 구조] 1. 컴퓨터 구조 알기 본문
< 목 차 >
1. 컴퓨터 구조를 알아야 하는 이유
2. 컴퓨터 구조의 큰 그림
3. Seven Great Ideas In Computer Architecture
1. 컴퓨터 구조를 알아야 하는 이유
😊컴퓨터 구조를 왜 알아야 할까요?
문제해결을 위해서 !
우리는 코딩을 하다 보면 에러가 발생하고, 여러가지 문제 상황에 직면합니다.
물론 단순히 프로그래밍 언어 입장에서의 문법 실수 일 수도 있지만,
더 광범위하게 HW 공간 부족으로 인해 생긴 문제일 수도있고, 다양한 원인이 존재할 수 있습니다.
예를 들어서 웹사이트를 개발한다고 가정하면 우리는 서버컴퓨터가 필요합니다.
어떤 사양의 서버 컴퓨터를 선택할지는 CPU와 메모리등을 어떤 것을 선택할지 직접 판단해야합니다.
이는 바로 성능, 용량, 비용의 문제에 직면합니다.
문제라고 보긴 힘들 수도 있지만 개발에 있어 성능, 용량, 비용은 중요한 요소입니다.
서비스 스펙에 오버하게 설정하는 것도 문제고, 너무 낮게 설정하는 것도 문제입니다.
적절한 스펙을 선택해서 성능, 용량, 비용을 최적화 하는 것이 중요합니다,
즉 컴퓨터 구조를 공부하게 되면 이러한 성능, 용량, 비용 문제에서 스스로 판단할 수 있는 힘이 생깁니다.
물론 회사에 인프라 담당자가 있어서 아예 신경을 안써도 되는데요?

제가 정확히 SI 기업에서 일하면서 했던 생각입니다. 상당히 한심한 생각입니다.
부끄러운 일이지만 제가 사용하던 컴퓨터의 메모리가 부족해서 RAM을 교체했어야 했는 데
정확히 RAM이 뭔지도 모르고 어떻게 생겼는 지도 몰라서 도움을 요청했던 일이 있습니다.
도와주시던 분의 표정을 잊을 수 없군요..
당시 그 분이 전공자인데 이것도 몰라요? 이랬던 기억이 납니다.
이렇듯 컴퓨터 구조를 배우게 되면 우리는 컴퓨터가 미지의 대상이 아닌 분석의 대상이 됩니다.
이제 들어가 봅시다 !!
2. 컴퓨터 구조의 큰 그림
컴퓨터 구조는 크게 2가지로 나누어서 공부 할 수있습니다.
첫번째는 컴퓨터가 이해하는 정보인 데이터와 명령어
두번째는 컴퓨터의 핵심적인 4가지 부품
컴퓨터가 이해하는 정보인 데이터와 명령어는 각 각 2장과 3장에서 다루고
핵심부품 4가지는 4,5,6,7,8에서 다룰 것입니다.
😎컴퓨터가 이해하는 정보
컴퓨터는 0과 1로 된 정보만 이해합니다. 영화 매트릭스에서 나온 유명한 장면 처럼 말이죠
크게 두 가지인 데이터와 명령어로 나뉘는 데
중요한 것은 명령어 입니다.
데이터는 말 그대로 컴퓨터가 이해하는 정보 덩어리라고 볼 수있습니다.
숫자, 동영상, 이미지 등 이러한 정보는 명령어 없이는 아무것도 아닌 덩어리일 뿐입니다.
반면에 명령어는 컴퓨터를 작동시키고, 데이터를 움직이는 정보입니다.
컴퓨터는 명령어를 처리하는 기계이고, 프로그램은 명령어의 모음이죠.
각 해당 내용은 2장과 3장에서 자세히 다룰 것입니다.
🪟컴퓨터의 4가지 핵심 부품
컴퓨터를 구성하는 핵심 4가지 부품에는 CPU,주기억장치,보조기억장치,입출력장치가 있습니다.
1. 주기억장치 = 메모리
메모리는 현재 실행되는 프록그램의 명령어와 데이터를 저장하는 부품입니다.
프로그램이 실행되려면 반드시 메모리에 저장이 되어야 합니다.
또한 컴퓨터가 메모리에서 명령어와 데이터를 처리하기 위해서는 위치가 정돈되어 있어야합니다.
이렇게 메모리에 저장된 값에 빠르게 접근하기 위해서 주소라는 개념을 사용합니다.
주기억장치에는 RAM과 ROM이 있지만 대부분 RAM을 지칭합니다.
2. CPU
Central Processing Unit 입니다.
가장 중요한 컴퓨터의 두뇌입니다 .명령어를 처리하는 부품이죠.
레지스터, ALU, 제어장치가 CPU의 3가지 핵심 부품입니다.
ALU는 Arithmetic Logic Unit이라는 이름에 맞게 연산을 수행합니다.
컴퓨터 내부에서 계산은 ALU가 합니다.
이러한 계산을 하기 위한 데이터를 메모리에서 읽어 오게 되는 데
이러한 데이터를 임시로 저장하는 공간이 레지스터입니다.
메모리에서 읽어 올 때 "메모리에서 읽어와!"라는 제어 신호를 관리하는 것은 제어 장치겠죠??
제어 장치는 제어 신호를 내보내고 명령어를 해석하는 장치로서 메모리 읽기,쓰기가 대표적입니다.
3. 보조기억장치
우리의 메모리는 성능이 좋고 실행되는 프로그램을 저장하지만,
컴퓨터를 꺼버리면 내용이 휘발됩니다. 휘발성 메모리인거죠
보조기억장치인 usb,ssd,hdd,cd-rom 등은 이렇게 데이터가 휘발되는 것을 막습니다.
즉 전원이 꺼져도 보관될 프로그램을 저장하는 장치입니다.
메모리는 현재 실행 될 프로그램을 저장 , 보조기억장치는 보관할 프로그램 저장
4. 입출력장치
이렇게 컴퓨터 내부에서 메모리를 읽고 쓰고 계산하고 여러작업이 수행되면 인간은 어떻게 명령을 내릴까요?
그러기위해서 필요한 게 입출력장치입니다. 컴퓨터 외부와 연결되서 컴퓨터 내부와 정보를 교환하는 장치입니다.
보조기억장치도 역시 컴퓨터외부에서 컴퓨터 내부의 정보를 교환하는 장치다. 라고 할 수있고 이는 맞는 말이긴합니다.
그래서 둘이 묵어서 Peripheral device ( 주변 장치 )라고 합니다. 하지만 보조기억장치는 메모리를 보조하는 특별한 기능을 수행하는 입출력 장치로서 보조기억장치로 분류해서 부르는 편이 좋은 것같습니다.
메인보드 - 시스템 버스
이렇게 컴퓨터의 핵심적인 4가지 부품들을 어떻게 연결할까요??
이러한 부품들은 전부 메인보드 ( 마더 보드 )라는 판에 연결됩니다.
메인보드에 연결된 부품은 서로 정보를 주고 받는 데, 버스를 통해서 주고 받습니다.
버스에는 여러 종류가 있지만 (시내버스,마을버스ㅋㅋ) 이 중에서도 중요한 것은 시스템 버스 입니다.
시스템 버스는 주소 버스, 제어 버스, 데이터 버스로 이루어져 있습니다.
아래의 사진들이 메모리 읽기, 쓰기의 과정을 표현한 것입니다.
위 그림과 같은 메모리 읽기,쓰기 과정을 보면 추후 배울 내용의 요약인 느낌입니다.
개인적인 생각론 컴퓨터 구조 공부를 마치고 이 1장만 보고 내용을 연관지어서 설명할 수 있으면 성공일것같습니다.
그 다음은 컴퓨터 구조를 발전 시킨 대표적인 7가지 아이디어 입니다. 수업때 외운 기억이 나네요,,
3. Seven Great Ideas In Computer Architecture
8가지 아이디어라고도 하지만 7가지로 정리하겠습니다.
1. 설계를 단순화 하는 추상화
설계시간을 줄이고 생산성을 높이기 위해 추상화를 사용한다.
실제로 HW영역에 대해서 깊게 몰라도 코딩을 할 수있다.
우리가 Kernel영역에 대해서 너무 깊게 알아야만 코딩을 할 수있다면 지나치게 신경 쓸 것이 많아져서 생산성이 저하 될것이다. 그래서 우리는 이러한 부분을 추상화를 통해서 생산성을 향상시킨 것이다.
아래단을 몰라도 고급언어로 프로그래밍이 가능하게 된것.
2. Common case Fast
자주 발생하는 일에 대해서 최적화를 통해서 성능을 개선하는 것이다.
무엇이 자주 발생하는 지에 대해서도 정의가 필요하다.
실제로 자바에서도 컴파일러는 자주 발생되는 함수는 최적화를 한다.
3. 병렬성을 사용한 성능 개선
같은 작업을 여러개로 나눠서 실행하는 것이다.
즉 멀티 쓰레드 개념
4. 파이프라이닝을 활용한 기능 개선
파이프라이닝은 병렬성을 활용한 기법으로
이전 작업이 이후의 작업에 영향을 주는
출력이 입력으로 들어가는 형태로 불을 끌때 소방관이 물양동이를 까대기 하는 경우.
5. 예측을 통한 성능 개선
일반적인 경우에는 명령이 들어와야지 실행하는 것이 정확하고 평균 시간이 짧을 것이다.
하지만 예측을 통해서 미리 수행하고 다를 경우 복구하는 과정이 그렇게 오버헤드가 크지 않다면
예측을 통한 처리속도 향상의 이득이 더 크다면 예측하는 것이 더 좋다.
6. 메모리 계층 구조
메모리 구조에서 CPU에 가까워 질 수록 비싸고, 성능이 좋고, 용량이 작다.
CPU에서 멀어 질 수록 처리해야될 데이터 크기가 커진다.
이렇게 계층을 구분해 놓음으로써 처리 속도를 향상 시키는 것이다.
이것도 Prediction의 한 종류다.
자주 쓰이는 데이터를 예측해서 캐쉬 이런 곳에 저장해놓는 것
7. 여유분을 통한 신뢰 개선
만약에 장애가 발생한다면 여유분 (백업)을 통해서 신뢰성을 복구 할 수 있을 것이다.
하지만 복구 데이터를 저장하고, 추가 공간이 필요하는 등 Trade Off가 있을 것이다.
여기까지가 1장이고 계속 내용이 추가 될 수도 있습니다.
피드백 환영 !
'CS적 감자 > 컴퓨터 구조 & 운영체제' 카테고리의 다른 글
[컴퓨터 구조] 3. 명령어 (1) | 2024.11.22 |
---|---|
[컴퓨터 구조 - 부록] 부동 소수점 (1) | 2024.11.22 |
[컴퓨터구조] 2. 데이터 (1) | 2024.11.20 |
[컴퓨터 구조 & 운영 체제 ] 시작 (3) | 2024.11.14 |