728x90
컴퓨터 구조를 배우는 이유
모든 프로그램은 컴퓨터 부품이 실행한다: 성능 & 용량 & 비용 이 세 가지가 컴퓨터 공학을 학습해야 하는 이유다.
컴퓨터 구조
- 프로그램을 이루는 두 정보 (0과 1로 이루어진 정보)
- 명령어 instruction
- 데이터 data
- 컴퓨터의 네 가지 핵심 부품
- CPU
- 레지스터 - 작은 임시 저장장치, 여러개일수 있다.
- ALU - 계산기 회로, overflow 검출기
- 제어 장치 - 명령어를 실질적으로 해석해주는 장치, 제어 신호를 내보내주는 장치
- 메인 메모리 & 캐시 메모리(CPU가 메인메모리에 접근하는 시간을 조금 더 줄여주기 위한 보조적인 저장공간)
- 메인 메모리에는 주소가 있다.
- 보조기억장치
- 입출력장치
- CPU
+ 위 네 가지 핵심 부품을 한데 모아서 저장해주는 곳을 '마더 보드'라고 한다.
+ 메인 보드(마더 보드): 핵심 부품을 연결할 기판
+ (시스템) 버스: 부품 간 정보를 주고받을 통로
소스 코드에서 명령어로
소스 코드: 고급 언어
명령어와 데이터: 저급 언어
저급 언어
- 기계어 (machine code)
- 어셈블리어 (assembly language)
이 두가지 언어는 CPU의 종류에 따라, 컴파일러의 종류에 따라 달라질 수 있다.
고급 언어에서 저급 언어로 변환되는 대표적 방법
컴파일
- 소스 코드 전체가 컴파일러(gcc)에 의해 검사, 목적 코드(object code)로 변환
- c/c++, rust
인터프리터
- 소스 코드 한 줄씩 인터프리터에 의해 검사, 목적 코드로 변환
- Python, JavaScript
다음 링크에서 어셈블리어를 확인할 수 있다.
우측 왼쪽에 있는 목록은 같은 소스코드라도 cpu의 종류, 컴파일러의 종류에 따라 결과가 달라질 수 있다.
내가 선택한 컴파일러를 확인해 보자
x86-64: intel, amd cpu로 대표되는 명령어 집합구조
gcc: 컴파일러의 종류
13.2: 버전
같은 코드라도 컴파일러의 종류, 명령어 집합구조에 따라 다른 어셈블리코드가 나온다.
명령어의 구조
무엇을 대상으로 무엇을 수행해라
오퍼랜드로 연산 코드를 수행하라
연산 코드(op-code)
오퍼랜드로 수행할 동작
mov, add, sup
오퍼랜드(operand), 피연산자
명령어를 수행할 대상
대상(데이터)이 직접 명시되기도 하고, 대상의 위치(레지스터 이름, 메모리 주소)가 명시되기도 함
3, 10, 3번지 주소
'Upstage AI Lab 4기 > 컴퓨터 공학' 카테고리의 다른 글
[컴퓨터 구조] CPU 성능 (1) | 2024.07.24 |
---|---|
[컴퓨터 구조] 명령어 사이클과 인터럽트 (0) | 2024.07.17 |
[컴퓨터 구조] CPU 핵심 구성 요소 (1) | 2024.07.17 |
[컴퓨터 구조] 2의 보수법, 부동 소수점, 문자 인코딩과 디코딩 (0) | 2024.07.17 |
[컴퓨터 구조] 명령어 오퍼랜드 필드에서의 주소 지정 방법 (0) | 2024.07.17 |