All

컴퓨터 구조

메모리의 주소 공간

물리 주소와 논리 주소 cpu와 실행중인 프로그램은 메모리 몇 번지에 무엇이 저장되어 있는지 다 알지 못한다 메모리에 저장된 값들은 시시각각 변하기 때문이다 새롭게 실행되는 프로그램은 새롭게 보조기억장치로부터 메모리에 적재 실행이 끝난 프로그램은 메모리에서 삭제 같은 프로그램을 실행하더라도 실행할 때 마다 적재되는 주소는 달라짐 물리 주소 메모리 입장에서 바라본 주소 말 그대로 정보가 실제로 저장된 하드웨어상의 주소 논리 주소 CPU와 실행 중인 프로그램 입장에서 바라본 주소 실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소 물리 주소와 논리 주소의 변환(MMU) MMU라는 하드웨어에 의해 변환 ex) CPU - (논리주소) - MMU - (물리주소) - 메모리 MMU는 논리 주소와 베이스 레..

컴퓨터 구조

메모리 & 캐시 메모리 - RAM의 특징과 종류

RAM의 특징 RAM은 실행할 대상을 저장하고, 휘발성 저장 장치이다 보조기억장치는 보관할 대상을 저장하고,비휘발성 저장 장치이다 RAM의 용량과 성능 RAM의 용량이 크면 많은 프로그램들을 동시에 실행하는 데에 유리하다 - 다다익램.. 쉽게 말해 책장의 많은 책들을 큰 책상(RAM)일수록 많이 올려두고, 왔다 갔다 할 필요 없이 동시에 볼 수 있다 RAM의 종류 1) DRAM (Dynamic RAM) 저장된 데이터가 동적으로 사라지는 RAM 데이터 소멸을 막기 위해 주기적으로 재활성화 해야한다 일반적으로 메모리로 사용되는 RAM - 상대적으로 소비전력이 낮고, 저렴하고, 집적도가 높아서(더 작고 빽빽하게 저장)대용량으로 설계하기 용이하다 2) SRAM (Static RAM) 저장된 데이터가 정적인(사라..

컴퓨터 구조

빠른 CPU를 만들어보자!(3) : CISC & RISC

명령어 집합(구조) ISA CPU가 이해할 수 있는 명령어들의 모음 CPU의 언어이자 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속 명령어 집합의 두축 CISC & RISC 1. CISC(Complex Instruction Set Computer) 복잡한 명령어 집합을 활용하는 컴퓨터(CPU) -> 복잡하고 다양한 명령어 활용 명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용 상대적으로 적은 수의 명령어로도 프로그램을 실행할 수 있다 명령어 파이프라이닝이 불리하다는 치명적인 단점.. - 명령어의 크기와 실행되기 전까지의 시간이 일정하지 않다. - 대다수의 복잡한 명령어는 사용 빈도가 낮다 ex) x86,x86-64는 대표적인 CISC 기반의 ISA 2. RISC(Reduced Instructi..

컴퓨터 구조

빠른 CPU를 만들어보자!(2) : 명령어 병렬 처리 기법

시간을 알뜰하게 쓰며 CPU의 명령어들을 처리할 수 있는 방법이 있을까? 명령어 파이프 라인 명령어가 처리되는 과정을 비슷한 시간 간격으로 나누면? - 1. 명령어 인출 - 2. 명령어 해석 - 3. 명령어 실행 - 4. 결과 저장 - 같은 단계가 겹치지만 않는다면 CPU는 각 단계를 동시에 실행할 수 있다. ⚠️ 파이프라인 위험 데이터 위험 - 명령어 간의 의존성에 의해 생기는 문제 제어 위험 - 프로그램 카운터의 갑작스러운 변화 구조적 위험 - 서로 다른 명령어가 같은 CPU부품(ALU,레지스터)를 쓰려고 할 때 슈퍼스칼라 CPU내부에 여러개의 명령어 파이프라인을 포함한 구조(오늘날의 멀티 멀티스레드 프로세서) 이론적으로는 파이프라인 개수에 비례하여 처리 속도가 올라가지만 파이프라인 위험도의 증가로 ..

컴퓨터 구조

빠른 CPU를 만들어보자!(1) : 클럭, 코어,스레드

내 컴퓨터의 CPU속도를 빠르게 만들 수 있는 방법에는 무엇이 있을까? 이번에는 그중 클럭,멀티코어,멀티스레드 등에 간략히 알아보자 우선, 컴퓨터 부품들은 클럭 신호에 맞춰 일사불란하게 움직인다 CPU는 명령어 사이클 이라는 정해진 흐름에 맞춰 명령어들을 실행한다 클럭 속도 헤르츠 단위로 측정 클럭속도가 높은 CPU는 빠르게 동작한다 필요 이상으로 클럭을 높이면 발열이 심각해짐 - CPU속도를 높이는데에 클럭 속도가 빠르다고 정답은 아니다! 코어와 멀티 코어 코어 수를 늘리는 방법 ("듀얼 코어","멀티코어") 스레드 수를 늘리는 방법("멀티스레드") 1) 코어? CPU내에서 명령어를 실행하는 부품 CPU안에 여러개 있을 수 있게 되었다 2) 멀티 코어? 여러 개의 코어를 포함하고 있는 CPU를 말한다T..

컴퓨터 구조

명령어 사이클과 인터럽트 (feat. 멈춰!!)

명령어 사이클 프로그램 속 명령어들은 일정한 주기가 반복되며 실행 이 주기를 명령어 사이클이라 한다 인터럽트 작은 방해를 받아 갑자기 중간되는 현상을 말함 CPU가 얼른 처리해야 할 다른 작업이 생겼을 때 발생! - 동기 인터럽트 (예외) : CPU에 의해 발생하는 인터럽트. CPU가 예기치 못한 상황을 접했을 때 발생 - 비동기 인터럽트(하드웨어 인터럽트) : 주로 입출력장치에 의해 발생 (알림과 같은 역할) -> 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 사용 하드웨어 인터럽트의 처리 순서(but 종류를 막론하고 처리 순서는 대동소이하다) 1. 인터럽트 요청 신호 :인터럽트는 CPU의 정상적인 실행흐름을 끊는 것이기에, 인트럽트 하기 전에 "지금 끼어들어도 되나요?" 라고 묻는것 2. 인..

컴퓨터 구조

CPU안의 ALU & 제어장치 & 레지스터

ALU가 받아 들이는 정보들! Tip : 결과값을 레지스터로 저장하는 이유는 CPU가 메모리에 접근하는 것보다 훨씬 빠르기 때문이다. ALU는 결과값 뿐만 아니라 연산 결과에 대한 추가적인 정보를 내보내야 할 때가 있다. - 플래그는 추가적인 정보를 말한다(음수인지,양수인지,오버플로우 인지...) 제어장치가 받아 들이는 정보들! 클럭 신호를 받아들인다 - 클럭이란 컴퓨터의 모든 부품을 일사분란하게 움직일 수 있게 하는 시간 단위 '해석해야 할 명령어'(명령어 레지스터)를 받아 들인다 - CPU가 해석해야 할 명령어는 '명령어 레지스터'라는 특별 레지스터에 저장됨 -> 해석 후에 제어 신호를 발생시켜 부품들에 수행해야 할 내용을 알려줌 플래그 레지스터 속 플래그 값을 받아들인다 시스템 버스,그 중에서 제어..

컴퓨터 구조

소스 코드와 명령어

고급 언어 개발자가 이해하기 쉽게 만든 언어 컴파일 언어, 인터프리터 언어가 있다. 컴파일 언어 : 컴파일 언어로 작성된 소스 코드는 컴파일러를 통해 저급 언어로 변환되고, 이 과정을 컴파일 이라고 한다. 인터프리트 언어 : 인터프리터에 의해 한 줄씩 실행 -> 소스 코드 전체가 저급언어로 변환 되기까지 기다릴 필요가 없다 저급 언어 컴퓨터가 이해하고 실행하는 언어 기계어,어셈블리어가 있다 기계어 : 0과 1로 이루어진 명령어로 구성됨 어셈블리어 : 0과 1로 이루어진 기계어를 읽기 편한 상태로 번역한 저급 언어 명령어의 구조 더해라,빼라,저장해라 : 연산 코드(+필드) 연산에 사용될 데이터가 저장된 위치 : 오퍼랜드(+필드) 오퍼랜드는 연산에 사용도리 데이터를 저장하는 경우보다 연산에 사용될 데이터가 ..

맹수호빵
'분류 전체보기' 카테고리의 글 목록 (11 Page)