CS/컴퓨터구조 12

[컴퓨터구조] RAID의 정의와 종류

RAID 개요 복수의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 RAID(Redundant Array of Independent Disks) 방식은 수명이 있는 보조기억장치의 한계를 극복하고자 개발된 기법이다. 이 시스템은 데이터의 안정성 혹은 성능 향상을 중심으로 설계되었다. 이번 시간에는 이러한 RAID 시스템을 적용한 하드디스크에 대해 알아보는 시간을 가지도록 하자. 본문 독립적인 보조기억장치를 하나로 묶는 것이 왜 데이터의 안정성, 그리고 높은 성능과 관련이 있을까? 이는 RAID의 종류(Level)를 알아보면 해답이 된다. RAID의 종류 RAID 0은 여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 구성 방식이다. 주로 성능 향상을 목적으로 사용하는데, 이는 데..

CS/컴퓨터구조 2023.09.13

[컴퓨터구조] 보조기억장치(하드, 플래시 메모리)

보조기억장치 개요 보조기억장치는 컴퓨터 시스템에서 데이터를 저장하고 검색하기 위해 사용되는 장치들의 모음이다. 이러한 보조기억장치는 데이터를 장기적으로 보존하며, 주 기억장치(주 메모리)인 RAM과 달리 전원이 꺼져도 데이터를 유지할 수 있다. 가장 일반적인 보조기억장치로는 하드 디스크(hard disk drive, hdd)와 플래시 메모리(flash memory)가 있다. 이들은 컴퓨터의 운영체제, 프로그램, 파일 및 기타 데이터를 저장하는 데 사용된다. 이번 시간에는 HDD와 플래시 메모리에 대해 학습해 보도록 하자. HDD 하드 디스크(또는 자기 디스크)는 자기적인(magnetic) 방식, 즉 회전하는 원판들 위에 자기적으로 데이터를 기록하고 읽어오는 방식으로 데이터를 저장하는 하드웨어를 의미한다...

CS/컴퓨터구조 2023.07.03

[컴퓨터구조] 메모리

메모리 개요 보조기억장치는 전원을 꺼도 데이터를 보존하는 비휘발성 저장 장치로, 이곳에는 데이터나 프로그램을 영구적으로 저장한다. 그러나 CPU와 보조기억장치 간에는 큰 데이터 전송 속도 차이가 있고, 두 장치 사이에 운영 체제가 중재 역할을 하므로, CPU는 보조기억장치에 직접 접근할 수 없다. 이 문제를 해결하기 위해, 실행될 프로그램이나 데이터는 보조기억장치에서 먼저 주 메모리인 RAM으로 복사된다. RAM은 휘발성 메모리로, 전원이 꺼지면 그 내용이 사라지지만, CPU가 빠르게 접근하여 데이터를 읽고 쓸 수 있게 한다. 따라서 RAM의 용량은 시스템 성능에 큰 영향을 미친다. RAM의 용량이 클수록 보조기억장치에서 더 많은 데이터를 미리 로드하여 저장할 수 있게 되는데, 이는 여러 프로그램을 동시..

CS/컴퓨터구조 2023.06.22

[컴퓨터구조] 캐시 메모리

메모리 계층 구조와 캐시 메모리 저장 장치 계층 구조 메모리 계층 구조(Memory Hierarchy)는 시스템 성능 최적화를 위해 다양한 유형의 메모리 저장소를 계층적으로 구성하는 방식을 의미한다. 이 계층 구조는 데이터의 속도, 용량, 비용 등의 요소를 고려하여, CPU로부터 얼마나 가까운 위치에 있는지를 기준으로 구성된다. CPU와 가까운 저장 장치는 빠르고, 멀리 있는 장치는 느리다 속도가 빠른 저장 장치는 저장 용량이 적고, 가격이 비싸다 계층 구조의 상위에 위치하는 메모리는 하위 계층의 메모리보다 빠르지만, 용량은 적고 가격이 비싸다. 반대로 하위 계층의 메모리는 상위 계층의 메모리보다 느리지만, 용량이 크고 가격이 싸다. 컴퓨터 시스템은 이러한 계층 구조 내의 모든 메모리를 활용하여 최적의 ..

CS/컴퓨터구조 2023.06.21

[컴퓨터구조] CPU 설계 기법 (2)

병렬 처리 기법과 ISA 병렬 처리 기법 이전 포스팅에서 CPU 성능을 향상하기 위한 몇 가지 기본 전략을 논의했었다. 클럭 속도를 높이는 것, 멀티코어나 멀티스레드를 지원하는 아키텍처를 사용하는 것 등이 그 예다. 그러나 CPU 성능 향상은 단순히 이러한 방법에만 의존하는 것이 아니라, 효율적인 작동 방식도 중요하게 고려해야 한다. 이번 게시글에서는 명령어 병렬 처리 기법에 초점을 맞추어 설명해 보겠다. 명령어 병렬 처리 기법(Instructuin-level parallelism)이란 여러 명령어를 동시에 처리함으로써 CPU가 휴식 없이 지속적으로 작동하게 하는 방법을 의미한다. 명령어 파이프라이닝, 슈퍼스칼라, 그리고 비순차적 명령어 처리 등이 이 기법의 대표적인 예시다. 명령어 파이프라이닝 명령어 ..

CS/컴퓨터구조 2023.06.13

[컴퓨터구조] CPU 설계 기법 (1)

코어와 스레드 클럭 이번 시간에는 CPU 성능 향상에 대한 다양한 전략들을 알아보도록 하자. 우선 클럭에 대해 알아보자. 클럭은 CPU의 작동 원리를 다룰 때 클럭에 대해 잠깐 설명했었다. 컴퓨터의 여러 부품들은 클럭 신호에 의존하여 동작한다. 이 신호는 CPU의 명령어 사이클, 즉 명령어를 처리하는 순서와 속도를 제어한다. 클럭의 단위는 헤르츠(Hz)이며, 이는 1초 동안 클럭이 반복되는 횟수를 나타낸다. 따라서 클럭의 속도가 높아질수록 CPU는 명령어 사이클을 더 빠르게 수행하게 되며, 이는 다른 부품들이 더 빠르게 작동하도록 한다. 그렇다면 클럭 속도를 무작정 높이면 CPU가 빨라질까? 이에 대한 답은 '부분적으로 빨라진다'이다. 클럭 속도를 강제로 증가시키는 오버클럭킹(Overclocking) 기..

CS/컴퓨터구조 2023.06.12

[컴퓨터구조] CPU의 작동 원리 (2)

명령어 사이클과 인터럽트 명령어 사이클 명령어 사이클(Instruction cycle)은 기본적으로 CPU가 프로그램을 실행하는 기본 단위다. 각 사이클은 명령어를 가져오거나, 해독하거나, 실행, 그리고 메모리에 결과를 저장하는 과정을 포함하고 있다. 다음 과정은 CPU의 기본 작업 흐름을 설명하는 것으로, 각 CPU와 명령어 집합마다 다소 차이가 있을 수 있지만, 큰 뼈대는 같다고 봐도 무방하다. 인출 사이클(Fetch cycle): CPU가 프로그램 카운터가 가리키는 메모리 주소에서 명령어를 가져온다. 프로그램 카운터는 그다음에 실행될 명령어의 메모리 주소를 저장한다. 디코딩 사이클(Decoding cycle): 인출된 명령어를 이해하고 실행할 수 있도록 해독한다.이 단계에서 CPU는 명령어가 무엇인..

CS/컴퓨터구조 2023.06.11

[컴퓨터구조] CPU의 작동 원리 (1)

CPU의 구성 요소 개요 컴퓨터의 뇌라고 할 수 있는 중앙처리장치(Central Processing Unit, CPU)는 주 기억장치인 메모리에서 명령어를 읽어 들이고 이를 해석하여 수행하는 작업을 맡는다. CPU의 주요 구성 요소로는 산술 및 논리 연산을 수행하는 ALU(Arithmetic Logic), 명령어의 순서와 수행을 제어하는 제어 유닛(Control Unit), 그리고 중간 결과와 작업 상태를 저장하는 레지스터(Register)가 있다. 이번 포스팅에서는 이러한 구성 요소들에 대해 공부해 보도록 하자. ALU ALU는 CPU의 핵심 요소로서 다양한 산술 및 논리 연산을 처리한다. 산술 연산은 덧셈, 뺄셈, 곱셈, 나눗셈 등을 포함하며, 논리 연산은 AND, OR, NOT 등의 비트 수준 연산..

CS/컴퓨터구조 2023.06.09

[컴퓨터구조] 명령어의 이해

명령어 저급 언어와 고급 언어 우리가 프로그램을 만들 때 사용하는 프로그래밍 언어는 컴퓨터가 이해하는 언어와 인간이 이해하는 언어로 나뉜다. 여기서 사람을 위한 언어는 고급(high-level) 언어라고 하고, 컴퓨터를 위한 언어는 저급(low-level) 언어라고 한다. 즉, 고급 언어로 작성된 소스 코드가 실행되려면 반드시 저급 언어, 즉 명령어로 변환되어야 한다. 먼저 명령어로 이루어진 저급 언어에 대해 다뤄보자. 저급 언어에는 기계어와 어셈블리어 두 가지 종류가 있다. 기계(machine)어는 0과 1의 명령어 비트로 이루어진 명령어 모음이다. 기계어는 이진수로 이루어져 있지만, 가독성을 위해 아래와 같이 16진수로 표현하기도 한다. 하지만 오로지 컴퓨터만을 위해 만들어진 기계어는 사람이 읽으면 ..

CS/컴퓨터구조 2023.06.03

[컴퓨터구조] 데이터의 이해 (2)

문자 표현 개요 문자를 0과 1의 의진 코드로 변환하는 메커니즘을 공부하기에 앞서, 문자 표현과 관련된 기본적인 용어들을 간단하게 살펴보자. 먼저 문자 집합(character set)이라는 개념이 존재한다. 이는 컴퓨터가 인식하고 표현할 수 있는 문자의 집합체를 의미한다. 컴퓨터는 이러한 문자 집합에 포함된 문자들만 인식 가능하다. 하지만 문자 집합에 속한 문자라 하더라도 컴퓨터가 바로 이해하는 것은 아니다. 사람이 이해하는 문자를 컴퓨터가 이해할 수 있는 이진 코드, 즉 0과 1로 변환해야만 컴퓨터가 인식하고 처리할 수 있다. 이처럼 인간이 이해하는 정보를 컴퓨터가 처리할 수 있는 형태로 변환하는 과정을 인코딩(encoding)이라고 한다. 반대로 컴퓨터가 처리하는 정보를 인간이 이해할 수 있는 형태로..

CS/컴퓨터구조 2023.06.02