차곡차곡 성 쌓기
article thumbnail
컴퓨터 구조 #13 - 메모리 주소 공간 - 물리 주소와 논리 주소
CS/컴퓨터 구조 2024. 2. 1. 21:00

컴퓨터에는 주소의 개념이 2가지가 있다. 물리 주소와 논리주소이다. 물리주소는 하드웨어적인 실제 주소를 말하며, 논리주소는 CPU가 이해하는 주소이다. 무엇인지 알아본다. 물리주소와 논리 주소 CPU는 전체 메모리에서 몇 번지에 무엇이 저장되어있는지 알지 못한다. 그 이유는 다음과 같다. 메모리에 저장된 값들은 시시각각 변하기 때문이다. 새롭게 실행되는 프로그램은 새롭게 메모리에 적재되고, 실행이 끝나면 메모리에서 삭제되기 때문에 전체 메모리를 알고 있는 것을 매우 비효율적이다. CPU는 이러한 점을 극복하기 위해 주소를 물리 주소와 논리주소를 나누었고, 논리 주소를 사용한다. ▶︎ 물리 주소 정보가 실제로 저장된 하드웨어상의 주소 ▶︎ 논리 주소 CPU와 실행 중인 프로그램 입장에서 바라본 주소 각 프..

article thumbnail
컴퓨터 구조 #12 - RAM의 특성과 종류
CS/컴퓨터 구조 2024. 1. 30. 23:50

본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)" 책과 강의를 기반으로 작성하였습니다. RAM이 크면 뭐가 좋을까? CPU는 메인 메모리(RAM)에서 명령어를 가져와 실행한다. 즉 RAM에 필요한 명령어가 있어야 바로바로 가져올 수 있다. 하지만 RAM의 크기는 한정적이고 휘발성 장치이기 때문에, 모든 명령어를 가지고 있을 수 가 없다. 바로 그래서 보조 기억 장치가 존재하는 것이다. 보조 기억 장치는 비휘발성이면서 비교적 큰 저장 용량을 가진다. 하지만 메모리에서 보조기억 장치에 있는 데이터를 가지오는 것은 빠른 CPU의 연산 속도에 비해 매우 느리다. 따라서 최대한 보조기억 장치에서 데이터를 가져오는 것을 줄여야하기 때문에 RAM에서 최대한 많은 데이터들을 가지고 있는 것이 좋다...

article thumbnail
컴퓨터 구조 #11 - 명렁어 집합 구조, CISC와 RISC
CS/컴퓨터 구조 2024. 1. 30. 15:49

본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)" 책과 강의를 기반으로 작성하였습니다. 컴퓨터 구조 #10 - 명령어 병렬 처리 기법(파이프 라인, 비순차적 명령어 처리) CPU 속도를 빠르게 하기 위해선 CPU가 쉬는 시간 없이 명령어를 처리하는 것이 매우 중요하다. 이를 쉽게 구현할 수 있는 방법이 바로 명령어 파이프 라인이다. 명령어 파이프 라인 하나의 명령어 uzinlab.tistory.com 앞선 글에서 CPU를 효율적으로 사용할 수 있는 방법인 파이프 라이닝에 대해 배웠다. 컴퓨터가 수행하는 명령어는 생김새, 연산, 주소 지정 방식 등이 달라 매우 다양하다. 하지만 이 중에서도 파이프 라이닝에 유리한 명령어들이 있다. 과연 이 중에서 파이프라이닝에 유리한 명령어는 무엇일까?..

article thumbnail
컴퓨터 구조 #10 - 명령어 병렬 처리 기법(파이프 라인, 비순차적 명령어 처리)
CS/컴퓨터 구조 2024. 1. 29. 21:59

본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)" 책과 강의를 기반으로 작성하였습니다. CPU 속도를 빠르게 하기 위해선 CPU가 쉬는 시간 없이 명령어를 처리하는 것이 매우 중요하다. 이를 쉽게 구현할 수 있는 방법이 바로 명령어 파이프 라인이다. 명령어 파이프 라인 하나의 명령어가 처리되는 과정을 비슷한 시간 간격으로 나누면 다음과 같이 4가지로 나눌 수 있다. 명령어 인출 (Instruction Fetch) 명령어 해석 (Instruction Decode) 명령어 실행 (Execute Instruction) 결과 저장 (Write Back) CPU는 같은 단계가 겹치지만 않는다면 CPU는 각 단계를 동시에 실행할 수 있다! 즉 병렬 처리가 가능하다. 파이프라인은 CPU의 처리 과..

article thumbnail
컴퓨터 구조 #9 - 빠른 CPU를 위한 설계 기법
CS/컴퓨터 구조 2024. 1. 29. 16:10

본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)" 책과 강의를 기반으로 작성하였습니다. 🐳 CPU를 어떻게 빠르게 만들까? 방법 1. 클럭 신호를 더 빠르게 먼저 클럭을 더 빠르게 조정하는 방법이 있다. 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직이다. 일반적으로 클럭 속도를 높일 수록 CPU도 빠르게 동작 한다. 하지만 클럭 수를 높이면 그 만큼 발열이 심해지는 문제가 있다. 참고로 요즘 i7 CPU의 클럭수는 평균 2.5GHz, 최고 4GHz이다. 약 1초에 2.5억번의 명령어 사이클을 실행한다는 것이다. Hz는 초당 실행하는 명령어 사이클의 수이다. 방법 2. 멀티 코어, 멀티 스레드 다른 방법으로는 코어의 수와, 스레드의 수를 늘리는 것이다. 코어와 스레드에 대해 알..

article thumbnail
컴퓨터 구조 #8 - 명령어 사이클과 인터럽트
CS/컴퓨터 구조 2024. 1. 28. 21:49

본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)" 책과 강의를 기반으로 작성하였습니다. 🐳 명령어 사이클 CPU는 정해진 흐름대로 명령어를 처리한다. 이러한 흐름을 명령어 사이클이라고 한다. 명령어 사이클은 2가지 동작으로 이루어진다. 인출 사이클과 실행 사이클이다. ▶︎ 인출 사이클 인출 사이클은 메모리로부터 CPU로 명령어를 가져오는 과정이다. 인출 사이클의 자세한 과정은 다음과 같다. PC안에 있는 주소를 MAR(Memory Ardderss Resister)로 보낸다. CPU는 MAR가 가리키는 주소의 메모리에 접근하여 명령어를 가져온다. 가져온 명령어는 MBR(Memory Buffer Resister)을 경유해서 IR에 저장된다. 다음 명령어를 실행하기 위해 PC의 값을 1 증..

article thumbnail
컴퓨터 구조 #7 - CPU 내부 구성 (레지스터)
CS/컴퓨터 구조 2024. 1. 27. 16:14

본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)" 책과 강의를 기반으로 작성하였습니다. 레지스터의 역할 레지스터는 CPU 내부에 있는 작은 임시저장 장치로 컴퓨터가 실행하는 프로그램 속 명령어와 데이터를 일시적으로 저장하고 전달한다. 레지스터는 컴퓨터 프로세서 내에서 자료를 보관하는 아주 빠른 기억장소이며, 메모리 계층의 최상위에 위차한다. 속도가 가장 빠른 만큼 비싸기 때문에 속도 측면에서 중요할 때와 꼭 사용해야되는 값들이 저장된다. 이렇게 빠르고 비싼 레지스터는 다양한 종류가 있고 각기 다른 역할을 가진다. CPU마다 사용하는 레지스터의 개수나 종류들은 다르지만, 공통적으로 사용하는 레지스터들이 있다. 이번 포스팅에서 공통적으로 사용하는 주요 레지스터의 종류와 역할에 대해 알아..

article thumbnail
컴퓨터 구조 #6 - CPU 내부 구성(ALU, 제어 장치)
CS/컴퓨터 구조 2024. 1. 27. 02:02

본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)" 책과 강의를 기반으로 작성하였습니다. ALU CPU의 핵심 부품 중 하나로 연산을 담당하는 부품이다. ALU에서 연산을 하기 위해서는 피연산자와 수행할 연산이 필요하다. ▶︎ 받아들이는 정보 제어 장치, 레지스터 ➞ ALU 제어 장치 : 제어 신호 보냄 레지스터 : 피연산자 보냄 ▶︎ 내보내는 정보 ALU ➞ 레지스터, 플래그 레지스터 빠르기 때문에 메모리가 아닌 레지스터에게 보낸다. 레지스터 :결과 값 플래그 레지스터 : 연산 결과에 대한 부가 정보 (ex: 양수, 음수 플래그, 범위 오버) 플래그 레지스터 : 플래그의 종류 부호 플래그 : 연산한 결과의 부호를 나타낸다. 제로 플래그 : 연산 결과가 0인지 나타낸다. 캐리 플래그 :..

article thumbnail
컴퓨터 구조 #5 - 명령의 구조와 주소 지정 방식
CS/컴퓨터 구조 2024. 1. 26. 14:48

본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)" 책과 강의를 기반으로 작성하였습니다. 명령의 구조와 주소 지정 방식 명령어는 컴퓨터를 움직이게 하는 정보이다. 우리가 짠 코드가 최종적으로 컴파일되어 컴퓨터가 이해하는 기계어로 변환된 것이다. 이때 명령어는 당연하게도 정해진 구조가 있다. 명령어의 구조에 대하 알아보고, 데이터를 어떻게 저장하는지 주소 지정 방식에 대해 알아본다. 명령어의 구조 명령 코드(operation code)와 오퍼랜드(operand)로 구성되어 있다. 명령 코드 : 명령어가 수행할 연산 오퍼랜드 : 연산에 사용할 데이터 또는 여산에 사용할 데이터가 저장된 위치 무엇을 대상, 무엇을 수행 오퍼랜드 연산에 사용될 데이터 or 연산에 사용될 데이터가 저장된 위치(주..

article thumbnail
컴퓨터 구조 #4 - 저급언어와 고급언어
CS/컴퓨터 구조 2024. 1. 26. 02:36

본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제" 책과 강의를 기반으로 작성하였습니다. 저급언어 기계어 : 0과 1로 이루어진 명령어로 구성 (2진수, 16진수) 어셈블리어 : 기계어를 읽기 편한 상태로 번역한 저급언어 0101 0101 → Push rbp 1100 0011 → ret 고급 언어 컴퓨터가 이해할 수 있는 기계어로 변환하기 위해 인터프리터나 컴파일러가 필수적으로 요구됨 컴파일 언어 인터프리터 언어 ✓ 컴파일 언어 코드가 실행되기 전 컴파일러를 거쳐서 기계어로 변환되어 실행되는 프로그래밍 언어 소스 코드를 전체적으로 컴파일하여 목적 코드(기계어 또는 중간 코드)로 변환 컴파일 과정에서 최적화(주석 제거 등)가 가능하며, 목적 코드는 특정 하드웨어 아키텍처에 최적화되어 실행 C, C++(..

728x90