728x90

프로그래밍/컴퓨터구조 및 운영체제 38

하드디스크와 플래시 메모리

[혼자공부하는 컴퓨터구조 & 운영체제] 를 공부하며 정리한 내용입니다. 하드디스크 자기적인 방식으로 데이터를 저장하는 보조기억장치이다. 1) 작동방식 - 수많은 N극과 S극으로 저장을 하는 플래터가 여러겹으로 이루어져있다. - 플래터는 일반적으로 양면 모두 사용한다. - 스핀들이 플래터를 회전시켜준다. (회전의 단위 : RPM_분당 회전수) - 헤드를 통해 플래터의 미세하게 떠있는 자기물질을 읽는다. - 헤드는 디스크 암에 부착되어 함께 이동한다. 2) 하드디스크 저장단위 - 기본적으로 트랙(track) / 섹터(sector) 단위로 데이터를 저장한다. 하나 이상의 섹터를 묶어 블록 이라고 표현하기도 한다. 실린더는 여러겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위이다. 연속된 정..

캐시 메모리 / 메모리 계층구조 / 참조 지역성 원리

CPU가 메모리에 접근하는 시간은 CPU의 연산 속도보다 압도적으로 느리다. >> 성능적으로 엄청난 손해가 난다. >> 메모리에 접근하는 시간을 줄일 필요가 있다. 저장 장치 계층 구조 (Memory hierarchy, 메모리 계층 구조) - 여기서 메모리는 RAM을 의미하는것이 아니다. - 일반적인 저장장치를 의미한다. 1) CPU와 가까운 저장장치는 빠르고, 멀리있는 저장장치는 느리다. 2) 속도가 빠른 저장장치는 저장 용량이 작고, 가격이 비싸다. 예시: 레지스터 vs RAM vs USB 속도: 레지스터 > RAM > USB 용량: USB > RAM > 레지스터 가격: 레지스터 > RAM > USB 캐시 메모리 - CPU와 메모리 사이에 위치해있다. - 레지스터보다 용량이 크고 메모리 보다 빠른 S..

메모리의 주소공간 - 물리주소와 논리주소

* 메모리를 학습하는데 있어서 주소공간은 굉장히 중요한 개념이다. 메모리내의 주소체계는 크게 2가지가 있다. 1. 물리주소 2. 논리주소 CPU와 실행중인 프로그램의 입장에서 바라본 논리주소 실제 하드웨어 주소번지에 해당하는 물리주소 CPU는 실행중인 프로그램이 현재 메모리 몇 번지에 무엇이 저장되어 있는지 다 알고 있을까? NO / 메모리에 저장된 값들은 시시각각 변하며 새롭게 실행되는 프로그램은 새롭게 메모리에 적재된다. 실행이 끝난 프로그램은 메모리에서 삭제되고 같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소가 달라지기 때문에 CPU는 실행중인 프로그램이 현재 메모리 몇번지에 어떻게 저장되어있는지 다 알고있지 못한다. 이런 점때문에 논리주소가 생겼다. 논리주소 - CPU와 실행중인 프로그램..

RAM의 특성과 종류

RAM의 특징 - CPU는 메모리로부터 명령어와 데이터들을 갖고와서 실행한다. - 렘은 실행할 대상을 저장하나 전원이 꺼지면 기억을 잃어버린다. RAM의 종류 1. DRAM - Dynamic RAM - 저장된 데이터가 동적으로 사라지는 RAM - 데이터 소멸을 막기 위해 주기적으로 재활성화가 필요함 - 일반적인 메모리로 사용되는 RAM이다 > 상대적으로 소비전력이 낮고 저렴하며 집적도가 높다. > 집적도가 높아 빽빽하게 설계가 가능하여 대용량의로 설계가 용이하다. 2. SRAM - Static RAM - 저장된 데이터가 사라지지 않는(정적인) RAM - DRAM보다 일반적으로 더 빠르다. - SRAM도 전원이 꺼지면 휘발되는것은 똑같음 - 일반적으로 캐시 메모리에 사용되는 RAM이다. > 상대적으로 소비..

명령어 집합구조, CISC & RISC

명령어 집합 - CPU가 이해할 수 있는 명령어들의 모음을 말한다. - 예를들어 인텔의 CPU는 일반적으로 x86(x86-64) 명령어 집합을, 애플의 CPU는 일반적으로 ARM 명령어 집합을 따른다. - 명령어 집합은 CPU가 이해할 수 있는 명령어들의 모음을 말하므로, 결국 인텔의 CPU에서 만든 실행파일을 맥으로 옮겨서 실행을 하려고 하면 실행이 안된다. -> ISA(명령어 집합)은 CPU의 언어이자 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속. CISC & RISC 1. CISC(Complex Instruction Set Computer) - 복잡한 명령어 집합을 활용하는 컴퓨터 - x86 / x86-64 1) 장점 - 복잡하고 다양한 명령어 활용이 가능하다. - 명령어의 형태와 크기가 다..

명령어 병렬 처리 기법

명령어 파이프라인 - 명령어 인출 (Instruction Fetch) - 명령어 해석 (Instruction Decode) - 명령어 실행 (Execute Instruction) - 결과 저장 (Write Back) * 같은 단계가 겹치지만 않는다면 CPU는 '각 단계를 동시에 실행할 수 있다. 명령어 파이프라이닝은 동시에 여러 개의 명령어를 겹쳐 실행하는 기법이다. 마치 컨베이어 벨트와 비슷하다. 파이프라인 위험 - 명령어 파이프라인이 성능 향상에 실패하는 경우를 말한다. 1. 데이터 위험 2. 제어 위험 3. 구조적 위험 1. 데이터 위험: 명령어간의 의존성 때문에 발생하는 위험이다. - 모든 명령어를 동시에 처리할 수는 없다.(이전 명령어를 끝까지 실행해야만 비로소 실행할 수 있는 경우를 말한다.)..

CPU의 속도를 빠르게 하는 멀티코어 멀티스레드

CPU의 속도 - 컴퓨터의 부품들은 클럭신호에 마줘 일사불란하게 움직이고 CPU는 명령어 사이클이라는 정해진 흐름에 맞춰 명령어를 실행한다. - 따라서 클럭속도가 빠르다면 명령어 처리속도가 빠르다. - 클럭속도 : HZ(헤르츠) 단위 - 1초에 클럭이 반복되는 횟수를 뜻하며 1초에 100번 반복되면 100Hz이다. - CPU는 클럭신호를 빠르게할때는 빠르게, 느리게 할땐 느리게 유동적인 동작이 가능하다. - 필요 이상으로 클럭을 높이면 발열이 심해지기 때문에 꼭 클럭신호를 빠르게한다고 해서 반드시 빨라지는것만은 아니다. 클럭속도를 늘리는 방법 이외에 CPU의 속도를 빠르게 하기 위한 방법 1. 코어 수를 늘리는 방법 (멀티 코어) 2. 쓰레드 수를 늘리는 방법 (멀티 쓰레드) 코어 / 멀티코어 - 오늘날..

명령어 Cycle과 Interrupt(인터럽트)

핵심 명령어는 일반적으로 인출과 실행이 반복된다. 그 중간에 메모리 접근이 더 필요한 경우에는 간접 사이클이 실행되는데 이렇게 반복되는 흐름을 끊어버리고 명령어를 실행할 수 있도록 인터럽트라는 개념이 있다. CPU가 일반적인 사이클로 돌고있다가 먼저 빠르게 처리해야할 다른 작업이 생겼을때 인터럽트가 발생한다. 명령어 사이클 - 프로그램 속 명령어들이 일정한 주기가 반복되며 실행되는것을 말한다. - CPU는 메모리에 있는 값을 CPU의 레지스터 혹은 내부로 인출해온 뒤 실행을 한다. (즉 인출 - 실행 - 인출 - 실행의 반복) - 하지만 주소지정방식이 메모리 접근이 더 필요한 경우에는 명령어를 한번 더 접근해야 하므로 간접 사이클이 실행되는것이다. 인터럽트 1. 종류 1) 동기 인터럽트 (Exceptio..

CPU의 내부 구성 - 레지스터

레지스터 - CPU 내부의 작은 임시저장장치이다. - 프로그램속 명령어 & 데이터는 실행 전후로 레지스터에 저장된다. - 가장 기초적인 단계에서부터 실행되는 순서, 원리등을 레지스터를 통해 관찰할 수 있다. * 프로그래머 입장에서는 관찰할 일이 많은 레지스터가 ALU나 제어장치보다 중요하다고 볼 수 있다. * 로우레벨 단계 개발자는 관찰할 일이 정말 많다고 한다. 대표적인 레지스터의 종류 1. 프로그램 카운터 2. 명령어 레지스터 3. 메모리 주소 레지스터 4. 메모리 버퍼 레지스터 5. 플래그 레지스터 6. 범용 레지스터 7. 스택 포인터 8. 베이스 레지스터 각각의 레지스터 설명 1. 프로그램 카운터 - 메모리에서 가져올 명령어의 주소를 저장하고 있다.(메모리에서 읽어드릴 명령어의 주소) - 명령어가..

ALU와 제어장치

ALU - 계산하는 장치이다. ALU가 받아들이는 정보 - 레지스터로부터 피연산자를 받아들인다. - 제어장치로부터 제어신호를 받아들인다. -> 계산을 하기 위해서는 피연산자와 수행할 연산이 필요하다. * 플래그 레지스터 1) 플래그 레지스터의 종류 - 부호 플래그 : 연산한 결과의 부호를 나타낸다. - 제로 플래그 : 연산 결과가 0인지 여부를 나타낸다. - 캐리 플래그 : 연산 결과 올림수나 빌림수가 발생했는지 나타낸다. - 오버 플로우 플래그 : 오버플로우 발생여부 - 인터럽트 플래그 : 인터럽트가 가능한지 나타낸다. - 슈퍼바이저 플래그 : 커널모드로 실행중인지, 사용자 모드로 실행중인지 나타낸다. ALU가 내보내는 정보 - 레지스터로 결과값을 내보낸다. - 플래그 레지스터로 플래그 값을 내보낸다...

728x90