Computer Architecture

chrkb1569·2022년 9월 29일
0
  • 컴퓨터 구조 및 구성
    컴퓨터 = 하드웨어 + 소프트웨어
    컴퓨터를 구성하고 있는 요소들은 매우 다양하지만, 크게 나눈다면 하드웨어와 소프트웨어로 구성되어 있다 볼 수 있을 것 같습니다.

하드웨어?

컴퓨터 시스템이 작동하는 데 필요한 물리적 구성 요소를 의미하며, 쉽게 말해 우리가 손으로 만질 수 있는 제품들을 보통 하드웨어라고 합니다.

그래픽 카드, CPU 등 컴퓨터를 실행시키는데에 필요한 필수 소프트웨어를 실행하는 역할을 수행합니다.

컴퓨터를 구동시키기 위해서는 하드웨어와 소프트웨어가 함께 작동해야 하지만, 시스템의 속도는 하드웨어의 많은 영향을 받습니다.

소프트웨어?

하드웨어가 컴퓨터 시스템이 작동하는 데 필요한 물리적 구성 요소라면, 소프트웨어는 그 반대로 컴퓨터에서 실행되는 가상 프로그램을 의미합니다.

컴퓨터에게 동작 방법을 지시하는 명령어 집합의 모임.

하드웨어를 제어하여 작업을 수행하며, 명령문과 데이터로 구성되어 있는데, 이러한 명령어는 어셈블리어와 같은 기계어가 아닌, 사람이 이해할 수 있는 고급 언어로 구성되어 있습니다.

컴퓨터를 크게 본다면 하드웨어와 소프트웨어로 구분할 수 있겠지만,

하드웨어와 소프트웨어는 어떠한 역할을 수행하느냐에 따라서 분류가 될 수 있는데,

하드웨어의 경우에는 중앙처리장치(CPU), 기억장치(Memory), 입출력장치(I/O Device)로,

소프트웨어의 경우에는 시스템 소프트웨어와 응용 소프트웨어로 분류할 수 있습니다.

그럼 이제부터 컴퓨터를 구성하고 있는 각 요소가 어떠한 기능을 수행하는지에 대하여 알아보도록 하겠습니다.

하드웨어 - 중앙처리장치(CPU)

컴퓨터의 머리 역할을 수행하며, 연산과 제어를 담당합니다.

CPU는 연산장치(ALU), 제어장치, 레지스터 3가지로 구성되어 있으며, 이들을 연결해주는 버스를 통하여 데이터를 전달합니다.

연산 장치(ALU)

주로 산술 연산과 논리 연산과 같은 비교, 연산과 관련된 작업을 수행합니다. 레지스터로부터 연산에 필요한 데이터를 가져오고, 이를 연산하여 결과를 다시 레지스터에 보내서 저장합니다.

제어 장치

명령어의 해석 및 실행을 담당합니다.

입력된 명령어를 해석하고, ALU로 보내 연산을 수행함.

레지스터

CPU에서 활용하는 명령어들과 명령어를 처리하는데에 필요한 데이터들을 임시 저장하는 기억장치입니다.

용도에 따라서 산술 및 논리 연산과 관련된 데이터를 저장하는 ‘범용 레지스터’와 특정 정보만을 저장하는데에 활용되는 ‘특수 목적 레지스터’로 구분됩니다.

버스

CPU 내부에 위치하여 연산 장치, 제어 장치, 레지스터를 연결해주는 CPU 내부 버스와 CPU에서 처리한 데이터를 전달하는 시스템 버스, 입출력장치와 연결되어 있는 I/O 버스가 있습니다.

CPU 내부에 위치한 버스의 경우에는 CPU 내부의 신호를 연결하는 역할을 수행합니다.

I/O 버스는 입출력장치와 CPU, RAM을 연결해주는 역할을 수행합니다.

시스템 버스의 경우에는 CPU에서 처리한 데이터를 다른 곳으로 전달하는 역할을 수행하는데, 주소버스, 데이터 버스, 제어 버스로 구분할 수 있습니다.

  • 주소 버스

CPU가 주기억 장치나 I/O 장치로 기억장치 주소를 전달하는 통로로 사용되며, 주소 전달만하기 때문에 단방향으로 설계되었습니다.

  • 데이터 버스

CPU와 기타 장치 사이에서 데이터를 전달하는 통로로 사용됩니다. CPU가 외부로부터 데이터를 받거나, 혹은 보내야하기 때문에 양방향으로 설계되었으며, 데이터 버스의 크기는 CPU가 한 번에 전송 가능한 데이터의 크기와 같습니다.

  • 제어 버스

이름에서 알 수 있지만, 다른 버스들을 제어하기 위한 신호들을 전송하는 통로로 사용됩니다. 제어 버스는 읽고 쓰는 동작들을 모두 수행하기 때문에 양방향으로 설계되었습니다.

일단 제일 먼저 CPU 내부에 위치한 제어 장치가 명령어를 받게 되면, 제어 장치는 이 명령어를 해독하여 연산 장치인 ALU에게 넘겨줍니다. 이때, CPU 내부에 위치한 버스를 통하여 데이터가 이동하게됩니다.

만약 ALU가 연산을 진행하고 있지 않은 상태라면, 제어 장치가 해독한 명령어를 ALU가 바로 처리하겠지만, 만약 ALU가 연산을 진행하고 있는 상황이라면, 임시 저장소인 레지스터에 명령어를 담아두었다가 순차적으로 처리합니다.

ALU가 처리한 명령어는 시스템 버스를 통하여 기억 장치로 이동하거나, 기타 I/O 버스와 같은 다른 버스에 의하여 처리되곤합니다.

하드웨어 - 기억장치(Memory)

기억장치는 CPU에 의해 시행될 프로그램이 저장되는 곳으로, **주기억장치, 보조기억장치, 캐시메모리로 구성됩니다.

기억장치에서 시행될 프로그램은 버스를 통하여 CPU의 제어 장치로 이동하고, 처리됩니다.

주기억장치

컴퓨터 내부에서 현재 CPU가 처리하고 있는 내용들을 저장하고 있는 기억장치로, 비교적 용량이 크고 처리 속도가 빠릅니다. RAM과 ROM이 있습니다.

CPU에서 직접 접근할 수 있는 유일한 대용량 저장 장치입니다.

  • RAM(Read Access Memory)
    - 읽기, 쓰기가 가능한 기억장치로, 응용 프로그램, 운영체제 등을 불러와 CPU가 작업할 수 있도록 하는 기억장치입니다.
    - 데이터를 읽는 속도와 기록하는 속도가 같으며, 프로그램을 로딩하거나, 데이터를 임시 저장하는 곳에 사용됩니다.
    - 전원이 끊어지면 데이터가 전부 지워진다는 휘발성이라는 속성을 가지고 있어, 실행하고 있는 파일들은 항상 보조기억장치에 저장해주어야한다는 특징이 있습니다. 따라서, 특정 프로그램을 실행하면, 컴퓨터는 보조 기억 장치에 저장된 데이터를 주기억 장치로 불러오고, 이를 CPU의 제어 장치로 넘겨서 이를 실행합니다.
  • ROM(Read Only Memory)
    - RAM처럼 읽기와 쓰기 모두 가능하지만, 쓰는 속도가 매우 느려 읽는 기능을 주로 사용하는 기억장치입니다.
    - 전원이 끊어져도 기록된 데이터들이 소멸되지 않는 비휘발성의 특징을 가지고 있습니다.
    - 데이터를 저장한 후, 반영구적으로 사용할 수 있습니다. 따라서, 변화해서는 안되는 프로그램이나 주요 데이터들이 ROM에 보관됩니다.
    - 일반적으로 ROM에 저장된 데이터들은 수정할 수 없지만, ROM의 종류에 따라서 수정이 가능한 제품들도 있습니다.

보조기억장치

USB, SD Card 등과 같은 저속, 대용량의 장치를 의미합니다.

보조 기억 장치는 주기억장치와 비교하였을때, 속도가 느리지만, 전원을 차단해도 내용을 유지할 수 있으며, 단위 비용 당 저장 용량이 크다는 장점이 존재합니다.

대표적인 보조 기억 장치로는 SSD와 HDD가 존재합니다.

  • SSD(Solid State Driver)

물리적으로 데이터를 저장하지 않고, 전기적으로 데이터를 저장하는 기억장치이며, HDD에 비하여 속도가 월등히 빠르고, 소음도 발생하지 않습니다. 또한 전력 소모가 적고, 경량화 소형화 할 수 있지만, HDD에 비해서는 가격이 매우 높다는 단점이 존재합니다.

  • HDD(Hard Disk Driver)

물리적인 디스크를 회전시켜서 데이터를 저장하는 장치입니다. 디스크에 데이터를 저장한다는 특징으로 인하여 충격에 약하며, 소음이 발생한다는 단점**이 존재합니다.

캐시메모리

CPU에서 활용하는 레지스터에 비하여 메인 메모리의 속도가 매우 빨라, 이 속도 차이를 줄이기 위하여 프로그램의 일부 혹은 사용 빈도가 높은 데이터를 저장해 프로그램 실행 속도를 향상시키기 위해 사용하는 메모리

        ※ 캐시 메모리 동작 과정
        
        1) 데이터를 주 기억 장치에서 캐시로 복사
        
        2) 캐시에서 데이터를 꺼내 처리
        
        3) 다음 데이터 요청 시, 캐시를 검사하여 해당 데이터가 있으면 꺼내옴
        
        4) 해당 데이터가 없을 경우, 주기억장치에서 꺼내옴
        
        5) 다시 사용하는 메모리 부분을 캐시에 복사
        

하드웨어 - 입출력장치(I/O Device)

입력 장치는 외부에서 주기억장치나 CPU로 데이터를 입력하고, 출력 장치컴퓨터 내부의 데이터를 외부로 출력. 이러한 과정에서 I/O 버스를 통하여 데이터 이동

소프트웨어 - 시스템 소프트웨어

시스템 소프트웨어

사용자를 위하여 응용 프로그램 간의 하드웨어 사용을 제어하고, 조정하는 기능을 수행하는 프로그램. 즉, 컴퓨터를 효율적으로 운영하여 제어하기 위한 프로그램입니다.

시스템 소프트웨어는 운영체제와 각종 유틸리티를 포함한다고 말할 수 있는데, 하드웨어를 동작시키는데에 필요한 운영체제운영체제의 동작을 도와주는 부수적인 프로그램들을 유틸리티로 분류하는 것 같습니다.

  • 운영체제(Operating System)

유일하게 하드웨어를 움직이게 할 수 있는 권한을 가지고 있으며, CPU, 하드 디스크 등의 하드웨어를 관리해주고, 내 컴퓨터와 다른 컴퓨터들을 통신할 수 있게끔 도와줍니다.

예시로 Window, Unix, Mac OS가 존재합니다.

  • 언어 번역 프로그램

말 그대로 특정 프로그래밍 언어로 작성된 대상을 다른 프로그램 언어로 번역해주는 프로그램

  • 링커(Linker)

하나의 결과를 출력하기 위하여 작성된 서로 다른 작은 프로그램들을 연결하여 실행 가능한 하나의 프로그램으로 만들어주는 역할을 수행.

  • 로더(Loader)

하드디스크와 같은 보조기억장치에 저장되어 있는 특정 프로그램을 CPU가 실행하기 위하여 주기억장치에 적재하는 과정을 담당.

  • 컴파일러(Compiler)

특정 프로그래밍 언어로 작성된 문서를 다른 프로그래밍 언어로 옮기는 프로그램을 의미합니다.

  • 셸(Shell)

운영체제 상에서 다양한 기능과 서비스를 구현하는 인터페이스를 제공

  • 라이브러리(Library)

주로 소프트웨어를 개발할 때, 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임

소프트웨어 - 응용 소프트웨어

  • 응용 소프트웨어

컴퓨터를 운용하고 관리하는 운영체제와 같은 시스템 소프트웨어와는 다르게 특정 업무를 쉽게 수행할 수 있도록 만들어진 프로그램을 의미합니다.

사용자의 요청이 있을때만 실행되며, 어셈블리어와 같은 기계어가 아닌, 고급 언어로 작성된다는 점에서 시스템 소프트웨어와 차이점이 존재합니다.

0개의 댓글