본문 바로가기
Computer

하드웨어의 개념

by yezys 2024. 2. 2.

하드웨어

하드웨어라는 용어는 유형의 물리적 물체인 컴퓨터의 모든 부분을 포함합니다. 회로, 컴퓨터 칩, 그래픽 카드, 사운드 카드, 메모리 (RAM), 메인보드, 디스플레이, 전원 공급 장치, 케이블, 키보드, 프린터, 마우스와 같은 입력 장치들은 모두 하드웨어입니다.

 

입력장치

가공되지 않은 데이터를 입력장치의 도움을 받아 컴퓨터로 보내면 그 데이터를 가공하여 출력장치로 보냅니다. 입력장치는 수동으로 조작할 수도 있고 자동화할 수도 있습니다. 처리하는 행위는 주로 CPU에 의해 규제됩니다.

입력장치의 예: 키보드, 카메라, 마이크, 마우스, 터치스크린 등

 

출력장치

컴퓨터가 출력을 제공하는 수단은 출력 장치로 알려져 있습니다.

출력장치의 예: 모니터, 프린터, 스피커 등

 

 

제어 장치 (Control Unit)

제어 장치(종종 제어 시스템 또는 중앙 제어 장치)는 컴퓨터의 여러 구성 요소를 관리합니다. 프로그램 명령을 읽고 해석(디코딩)하여 컴퓨터의 다른 부분을 활성화하는 제어 신호로 변환합니다. 고급 컴퓨터의 제어 시스템은 성능을 향상시키기 위해 일부 명령의 실행 순서를 변경할 수 있습니다.

모든 CPU에 공통적인 핵심 구성 요소는 다음 명령을 메모리의 어느 위치에서 읽을 것인지 추적하는 특수 메모리 셀(레지스터)인 프로그램 카운터입니다.
제어 장치가 명령을 처리하기 위해 겪는 일련의 작업은 그 자체로 짧은 컴퓨터 프로그램과 같고, 실제로 더 복잡한 CPU 설계에서는 마이크로시퀀서라고 불리는 또 다른 작은 컴퓨터가 있는데, 이는 이 모든 이벤트를 발생시키는 마이크로코드 프로그램을 실행합니다.

 

중앙처리장치(CPU)

제어 유닛, ALU, 레지스터를 통틀어 중앙 처리 장치(CPU)라고 합니다. 초기 CPU는 많은 별개의 구성 요소로 구성되었습니다. 1970년대부터 CPU는 일반적으로 마이크로프로세서라고 불리는 단일 MOS 집적 회로 칩에 구성되었습니다.

 

산술논리단위(ALU)

ALU는 산술과 논리의 두 가지 클래스의 연산을 수행할 수 있습니다. 특정 ALU가 지원하는 산술 연산들의 집합은 덧셈과 뺄셈으로 제한되거나 곱셈, 나눗셈, 사인, 코사인 등의 삼각함수와 제곱근 등을 포함할 수 있습니다. 어떤 연산들은 정수에 대해서만 연산할 수 있고, 다른 연산들은 제한된 정밀도를 가지고 있지만 실수를 나타내기 위해 부동소수점을 사용합니다. 그러나 가장 간단한 연산만 수행할 수 있는 컴퓨터는 더 복잡한 연산들을 수행할 수 있는 간단한 단계들로 분해하도록 프로그래밍될 수 있습니다. 따라서 모든 컴퓨터는 산술 연산을 수행하도록 프로그래밍될 수 있지만 ALU가 연산을 직접 지원하지 않는 경우에는 시간이 더 걸릴 수 있습니다. ALU는 또한 하나가 같거나 다른 것보다 크거나 작는지에 따라 숫자를 비교하고 부울 진리값을 반환할 수 있습니다. 논리 연산에는 부울 논리 AND, OR, XOR, NOT가 포함됩니다. 이들은 복잡한 조건문을 만들고 부울 논리를 처리하는 데 유용할 수 있습니다.

슈퍼스칼라 컴퓨터는 여러 개의 ALU를 포함할 수 있으므로 여러 명령어를 동시에 처리할 수 있습니다. SIMD와 MIMD 기능을 가진 그래픽 프로세서와 컴퓨터는 벡터와 행렬에 산술을 수행할 수 있는 ALU를 포함하는 경우가 많습니다.

 

메모리

컴퓨터의 메모리는 숫자를 넣거나 읽을 수 있는 셀의 목록으로 볼 수 있습니다. 각 셀에는 번호가 매겨진 "주소"가 있고 하나의 숫자를 저장할 수 있습니다. 메모리에 저장된 정보는 실질적으로 어떤 것이든 나타낼 수 있습니다. 글자, 숫자, 심지어 컴퓨터 명령도 쉽게 메모리에 넣을 수 있습니다. CPU는 서로 다른 종류의 정보를 구별하지 않기 때문에 메모리가 일련의 숫자에 불과하다고 보는 것에 의미를 부여하는 것은 소프트웨어의 책임입니다.

거의 모든 현대 컴퓨터에서 각 메모리 셀은 이진수를 8비트 그룹으로 저장하도록 설정되어 있습니다. 각 바이트는 256개의 서로 다른 숫자 즉 0에서 255 또는 -128에서 +127)를 나타낼 수 있습니다. 더 큰 숫자를 저장하기 위해 여러 개의 연속된 바이트가 사용될 수 있습니다(일반적으로 2개, 4개 또는 8개). 음수가 필요할 때는 대개 2의 보 표기법으로 저장됩니다. 다른 배열도 가능하지만 특수 응용 프로그램이나 역사적 맥락 외에는 대개 볼 수 없습니다. 컴퓨터는 어떤 종류의 정보라도 숫자로 나타낼 수 있으면 메모리에 저장할 수 있습니다. 현대 컴퓨터에는 수십억 또는 심지어 수조 바이트의 메모리가 있습니다.

CPU에는 레지스터라는 특별한 메모리 셀 집합이 들어 있는데, 레지스터는 메인 메모리 영역보다 훨씬 빠르게 읽고 쓸 수 있습니다. 레지스터는 CPU의 종류에 따라 보통 2~100개 정도가 있습니다. 레지스터는 데이터가 필요할 때마다 메인 메모리에 액세스할 필요를 피하기 위해 가장 자주 필요한 데이터 항목에 사용됩니다. 데이터 작업이 계속 진행됨에 따라 메인 메모리에 액세스할 필요가 줄어듦에 따라 컴퓨터 속도가 크게 향상됩니다.

컴퓨터 메인 메모리는 두 가지 주요 종류로 제공되는데, 랜덤 액세스 메모리(RAM)과 읽기 전용 메모리(ROM) 입니다. RAM은 CPU가 명령하면 언제든지 읽고 쓸 수 있지만 ROM에는 절대 변하지 않는 데이터와 소프트웨어가 미리 로드되어 CPU는 RAM에서 읽기만 할 수 있습니다. ROM은 일반적으로 컴퓨터의 초기 시작 명령을 저장하는 데 사용됩니다. 일반적으로 RAM의 내용은 컴퓨터의 전원이 꺼지면 지워지지만 ROM은 데이터를 무한정 유지합니다. PC에서 ROM에는 BIOS라는 특수 프로그램이 포함되어 컴퓨터의 운영 체제를 하드 디스크 드라이브에서 RAM으로 로드하는 것을 조정합니다. 디스크 드라이브가 없는 경우가 많은 임베디드 컴퓨터에서는 필요한 모든 소프트웨어를 ROM에 저장할 수도 있습니다. ROM에 저장된 소프트웨어는 펌웨어라고 불리는 경우가 많은데, 이는 개념적으로 소프트웨어보다는 하드웨어에 가깝기 때문입니다. 플래시 메모리는 ROM과 RAM의 구분을 흐리게 하는데, 이는 꺼지면 데이터가 유지되지만 다시 쓰기도 가능하기 때문입니다.

 

입출력(I/O)

I/O는 컴퓨터가 외부와 정보를 교환하는 수단입니다. 컴퓨터에 입력 또는 출력을 제공하는 장치를 주변기기라고 합니다. 전형적인 개인용 컴퓨터에서 주변기기는 키보드와 마우스 같은 입력 장치와 디스플레이와 프린터 같은 출력 장치를 포함합니다. 하드 디스크 드라이브, 플로피 디스크 드라이브, 그리고 광 디스크 드라이브는 입력과 출력 장치의 역할을 모두 합니다. 컴퓨터 네트워킹은 I/O의 또 다른 형태입니다. I/O 장치는 종종 자체 CPU와 메모리가 있는 그 자체로 복잡한 컴퓨터입니다. 그래픽 처리 장치는 3D 그래픽을 표시하는 데 필요한 계산을 수행하는 50개 이상의 작은 컴퓨터를 포함할 수 있습니다. 현대의 데스크톱 컴퓨터는 I/O를 수행하는 메인 CPU를 돕는 많은 더 작은 컴퓨터를 포함합니다. 2016년형 평면 화면 디스플레이는 자체 컴퓨터 회로를 포함합니다.

 

멀티태스킹

컴퓨터는 주 메모리에 저장된 하나의 거대한 프로그램을 실행하는 것으로 볼 수 있지만 일부 시스템에서는 여러 프로그램을 동시에 실행하는 것처럼 보일 필요가 있습니다. 이는 멀티태스킹 즉, 컴퓨터가 각 프로그램을 차례로 실행하는 사이를 빠르게 전환함으로써 달성됩니다. 이를 수행하는 한 가지 수단은 인터럽트라는 특수한 신호로, 컴퓨터가 주기적으로 명령어의 실행을 중지하고 대신 다른 작업을 수행하도록 할 수 있습니다. 인터럽트 전에 실행 중이던 위치를 기억함으로써 컴퓨터는 나중에 해당 작업으로 돌아갈 수 있습니다. 여러 프로그램이 동시에 실행 중인 경우 "한 번에" 인터럽트 발생기가 초당 수백 번의 인터럽트를 발생시켜 매번 프로그램을 전환하는 원인이 될 수 있습니다. 현대 컴퓨터는 일반적으로 인간의 인식보다 몇 배 빠른 속도로 명령어를 실행하기 때문에 주어진 순간에 오직 한 개만 실행하더라도 많은 프로그램이 동시에 실행되는 것처럼 보일 수 있습니다. 각 프로그램에는 차례로 "슬라이스" 시간이 할당되므로 이 멀티태스킹 방법을 "타임 셰어링"이라고 부르기도 합니다.

저렴한 컴퓨터 시대 이전에는 멀티태스킹에 주로 사용된 것은 많은 사람들이 같은 컴퓨터를 공유할 수 있도록 하는 것이었습니다. 겉보기에는 멀티태스킹으로 인해 여러 프로그램 사이를 전환하는 컴퓨터가 실행 중인 프로그램의 수에 정비례하여 더 느리게 실행되지만 대부분의 프로그램은 느린 입출력 장치가 작업을 완료하기를 기다리며 많은 시간을 보냅니다. 프로그램이 사용자가 마우스를 클릭하거나 키보드의 키를 누를 때까지 "타임 슬라이스"(time slice)가 나지 않습니다. 이로 인해 다른 프로그램을 실행할 수 있는 시간이 확보되어 많은 프로그램이 허용되지 않는 속도 손실 없이 동시에 실행될 수 있습니다.

 

멀티프로세싱

일부 컴퓨터는 멀티프로세싱 구성으로 여러 CPU에 작업을 분산하도록 설계되어 있는데, 이 방식은 한때 슈퍼컴퓨터, 메인프레임 컴퓨터, 서버와 같은 크고 강력한 기계에만 사용되었습니다. 현재 개인용 및 노트북 컴퓨터는 멀티프로세서와 멀티코어(단일 집적회로의 여러 CPU)로 널리 보급되고 있으며, 이에 따라 보급형 시장에서 점점 더 많이 사용되고 있습니다.

특히 슈퍼컴퓨터는 기본 저장 프로그램 아키텍처와 범용 컴퓨터와는 상당히 다른 매우 독특한 아키텍처를 가지고 있는 경우가 많습니다. [g] 이들은 종종 수천 개의 CPU, 맞춤형 고속 상호 연결 및 특수 컴퓨팅 하드웨어를 특징으로 합니다. 이러한 설계는 사용 가능한 대부분의 자원을 한 번에 사용하는 데 필요한 대규모 프로그램 구성 때문에 전문화된 작업에만 유용한 경향이 있습니다. 슈퍼컴퓨터는 일반적으로 소위 "난감할 정도로 평행한" 작업뿐만 아니라 대규모 시뮬레이션, 그래픽 렌더링 및 암호학 응용 프로그램에서 사용되는 것을 봅니다.