일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- 코드잇앰배서더
- 티스토리챌린지
- 혼공단
- bottom tab navigation
- 자바스크립트
- 르탄즈5기
- 환경교육봉사
- 혼공단JS
- 오늘도코드잇
- js
- 코드잇TIL
- 독서활동
- 혼공컴운
- 오블완
- 스파르타코딩클럽
- 코드잇강의추천
- DB마이저널
- 코드잇
- ReactNative
- GIT
- DB김준기문화재단
- 내일배움캠프
- 앱개발강의
- 르탄즈
- 내일배움캠프사전캠프
- 앱개발부트캠프
- DB드림리더장학생
- c++헤더
- 코딩공부
- Today
- Total
axnuo
[CA/혼공단] 컴퓨터 구조 시작과 명령어 본문
지난 여름 혼JS를 끝내고 학교 강의로 들었던 컴퓨터 구조를 복습하며 블로그에 정리하고 앞으로 배울 OS를 미리 공부하기 위해 혼공컴운으로 신청하게 되었다 저번에는 뒤로 갈수록 의지를 잃었지만 이번에는 꼭...! 늘 열심히
Chapter 1. 컴퓨터 구조 시작하기
컴퓨터가 이해하는 정보
- 데이터
- 명령어
컴퓨터의 네 가지 핵심 부품
- CPU구성요소
- 산술논리연산장치 (ALU) : 계산기
- 레지스터 : 임시 저장 장치
- 제어장치 : 제어신호를 내보내고 명령어 해석
- → 메모리 읽기 / 쓰기
- 메모리에 저장된 명령어를 읽어 들이고, 읽어 들인 명령어를 해석 및 실행하는 부품
- 메모리저장된 값에 빠르고 효율적으로 접근하기 위해 주소 개념 사용
- 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품
⇒ 명령어 실행 예시
- 제어장치에서 명령어를 읽어들이기 위해 메모리 읽기 제어 신호를 보낸다
- 메모리에 저장된 명령어를 CPU에 전달 → 레지스터에 저장 후 제어 장치는 필요한 데이터를 메모리에서 읽어 들이며 메모리가 CPU에 데이터를 전달
- ALU에서 읽어 들인 데이터로 연산 수행 후 결괏값 레지스터에 저장
- 연산 결과는 메모리에서 저장 주소 읽어 들인 후 CPU를 통해 레지스터에 저장
- 제어장치는 메모리 쓰기 제어 신호와 계산 결과를 내보냄.
- 보조기억장치→ SSD, USB, DVD…
- 메모리보다 크기가 크고 전원이 꺼져도 저장된 내용을 잃지 않음
- 입출력장치
- 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치
- 메인보드와 시스템 버스→ 부품들은 버스라는 통로를 통해 소통 가장 중요한 버스는 시스템 버스
- 주소 버스
- 데이터 버스
- 제어 버스
- 시스템 버스의 종류
- 컴퓨터의 핵심 부품은 메인보드에 연결
Chapter 2. 데이터
02-1. 0과 1로 숫자를 표현하는 방법
- 비트 : 가장 작은 정보 단위
- 바이트 : 8bit
- KB < MB < GB < TB…
2의 보수
음수로 표현된 값을 반대로 뒤집은 뒤 + 1
02-2. 0과 1로 문자를 표현하는 방법
문자 집합과 인코딩
문자 집합 : 컴퓨터가 인식하고 표현할 수 있는 문자의 모음
문자 인코딩 : 문자를 0과 1로 변환하는 과정
문자 디코딩 : 0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정
아스키 코드
아스키 문자에 대응된 고유한 수
→ 한글 인코딩 방식인 EUC-KR 방식 등장
- 완성형 인코딩 : 하나의 ‘글자’에 고유한 코드 부여
- 조합형 인코딩 : 초성, 중성, 종성에 각각 비트열을 할당한 후 조합
⇒ EUC-KR은 완성형 인코딩 (16비트)
Chapter 3. 명령어
03-1. 소스 코드와 명령어
고급 언어와 저급 언어
고급(high level) : C, JAVA 등… 사람을 위한 언어
저급(low level) : 기계어, 어셈블리어
컴파일 언어와 인터프리터 언어
컴파일 언어
컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어 (C)
→ low level로 변환되는 과정을 거침 : 컴파일 / 컴파일을 수행해 주는 도구 : 컴파일러
인터프리터 언어
인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어(Python)
→ 소스 코드 전체를 저급 언어로 변환하는 시간을 기다릴 필요가 없음
03-2. 명령어의 구조
연산 코드와 오퍼랜드
명령어의 구성
|연산코드 | operand|
→ mov rbp, rsp
operand 갯수에 따라 0-주소 명령어, 1-주소 명령어, … 라고 부름
연산코드
- 데이터 전송
- MOVE, STORE, LOAD, PUSH, POP
- 산술/논리 연산
- ADD, SUBSTRACT, MULTIPLY, DIVIDE
- AND, OR, NOT
- COMPARE
- 제어 흐름 변경
- JUMP, CONDITIONAL JUMP, HALT, CALL, RETURN
- 입출력 제어
- READ, WRITE, START IO, TEST IO
주소 지정 방식
연산에 사용할 데이터 위치를 찾는 방법
operand field에 메모리 address로 저장된다면 표현할 수 있는 데이터의 크기를 늘릴 수 있음
유효주소 (effective address)
→ 연산의 대상이 되는 데이터가 저장된 위치
필수 과제
p. 51의 확인 문제 3번, p. 65의 확인 문제 3번 풀고 인증하기
p. 51 - 3번
💡 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 합니다.
p. 65 - 3번
💡 1101 → 0010 → 0011 따라서 0011
선택 과제
p. 100의 스택과 큐의 개념을 정리하기
- 스택
- LIFO (후입선출)
- 큐
- FIFO (선입선출)
⇒ 스택은 한쪽이 막혀있는 통, 큐는 양쪽이 뚫려 있는 통
스택 / 큐에 새로운 데이터를 저장하는 명령어 : PUSH, 꺼내는 명령어 : POP
느낀점과 앞으로의 계획
학기 중에 배운 컴퓨터 구조는 MIPS 구조 기반이었다. MIPS에서는 명령어를 R type, I type이라고 부르는데 0-주소 명령어, 1-주소 명령어 같은 생소한 이름이 나와서 조금 당황했다. 뒷 부분에서 어떻게 나올지는 모르겠지만 학교 강의에서는 문제 풀이 위주였어서 학교 강의에서 다뤘던 내용들도 따로 블로그에 기록하고 싶다! 컴구는 학기 중에 가장 열심히 했던 과목이라 머릿속에서 날라가지 않았지만 그래도 나중에 다시 찾아볼 수 있으니 세세한 부분도 꼼꼼히 읽고 기록하는 습관을 들이길 바라는 마음이다!
'CS > CA' 카테고리의 다른 글
[CA /혼공단] 메모리와 보조기억장치 (0) | 2024.01.20 |
---|---|
[CA/혼공단] CPU 성능 향상 기법 (1) | 2024.01.10 |
[CA/혼공단] CPU의 작동 원리 (0) | 2024.01.09 |