1. Computer Architecture

아현·2021년 10월 9일
0

Computer Science

목록 보기
9/57



  1. hdd와 ssd의 차이는?

참고

  • HDD에서 정보 입출력이란 정보를 저장해두는 원판을 플래터가 움직여 읽어내는 것인데, 이 플래터가 움직이는 거리가 멀어질수록 자연히 정보를 읽고 쓰는 속도가 느려질 수밖에 없습니다. 실제로 그만큼의 거리를 물리적으로 움직여야 하기 때문인데요. 그래서 아무리 다른 컴퓨터 부품이 비약적으로 발전해도 HDD의 물리적 탐색 시간이 병목현상을 일으켜 급격히 느려지는 문제 때문에 실질적인 정보 처리 속도 상승은 기대하기가 어려웠습니다.

이런 상황을 타파한 것이 바로 SSD의 등장입니다. SSD는 플래시 메모리를 이용하여 정보를 읽고 쓰기 때문에 물리적 제약이 없습니다. 그 때문에 어떤 지점의 정보에 접근하더라도 같은 속도를 보입니다. 병렬 처리에 있어서 HDD보다 훨씬 더 빠른 속도를 자랑하기 때문에, 최근에는 이 SSD가 더욱 선호되고 있는 것입니다. 소음도 적고 소비 전력 역시 적으며, HDD가 물리적 충격에 약한 것에 비해 SSD는 그런 단점이 없는데다가 더 튼튼하기까지 합니다.

  • 간단히 표현하자면 HDD가 물리적으로 정보를 저장할 때 SSD는 전자적으로 정보를 저장한다는 것



  1. 캐시란?
  • 캐시는 CPU의 일부인 작은 메모리입니다. RAM보다 CPU에 더 가깝게 배치됩니다. CPU가 재사용할 가능성이 있는 데이터와 명령을 일시적으로 보유합니다."



  1. CPU의 구조는?



  1. GPU란?
  • GPU는 Graphic Processing Unit(그래픽 처리 장치)의 약어로, 그래픽 처리, 특히 3D 모델링을 위한 프로세서로 탄생하였습니다.

  • CPU는 엄청 똑똑한 인간의 뇌와 같습니다.

    • CPU의 연산을 담당하는 연산장치(ALU)는 구조가 매우 복잡하고, 각종 제어 처리를 담당하고 있습니다.

    • 그래서 명령어가 입력된 순서로 출력하는 직렬 처리 방식 및 복잡한 계산에 대한 빠른 처리가 가능합니다.

  • GPU는 연산 장치(ALU)의 구조가 단순하고, 작은 제어/캐시 영역을 가집니다. 그리고 다수의 코어로 이루어져 있습니다.

    • 이러한 구조적인 특징으로 인해, 여러 개의 코어를 동시에 병렬로 작동시켜 부동 소수점 연산 등 특정 단순 계산을 빠르게 할 수 있습니다.

    • 그렇기에 다량의 병렬연산이 필요한 3D 렌더링이나, 딥러닝, 블록체인 등에 GPU가 사용되고 있으며 연산을 가속해주기에 '가속기'라는 명칭으로 불리기도 합니다.



  1. 파이프라이닝이란?

참고

  • 파이프라인을 통해 프로세서에서 명령을 수행하는 프로세스입니다. 명령을 순서대로 저장하고 실행합니다.

    • 각 단계별 처리 시간이 일정 해야한다.

    • 각 명령의 처리 단계는 균일 해야한다.

  • 명령어를 순차적으로 실행하는 프로세서에 적용되는 기술로, 한 번에 하나의 명령어만 실행하는 것이 아니라 하나의 명령어가 실행되는 도중에 다른 명령어를 실행을 시작하는 식으로 동시에 여러 개의 명령어를 실행하는 기법이다.

    • 이렇게 동시에 여러 개의 명령어를 처리하므로써 처리량을 올리는 것이 파이프라이닝의 핵심이다.

    • 모든 단계는 원래의 동작 속도대로 일을 하면서 처리량을 늘리는 것이지 원래의 동작 속도를 단축시키는 것은 아니다.

처리 시간이 일정하지도 않고 처리 단계가 균등하지 않아서 문제가 발생하는데 이를 해저드(Hazard)라고 한다.


1) 구조적 해저드

  • 프로세서의 자원이 부족해서 발생한다.
    • 아래와 같이 명령어 2에서 [실행하기]가 1클럭에 안끝날 경우 , 명령어 3에서 [결과쓰기] 수행할 때 멈춤(stall)이 발생한다.



      2) 데이터 해저드
  • 이전 명령어의 결과를 기반으로 다음 명령이 수행될 때 파이프라인이 지연되는 경우 생기는 것으로, 컴퓨터 파이프라인에서는 앞선 명령어에 종속성을 가질 때 데이터 해저드가 일어난다.
    • 이를 해결하기 위한 방법 중 하나는 바로 전방전달(forwarding) 혹은 우회전달(bypassing) 이다. 이것은 별도의 하드웨어를 추가하여 정상적으로는 얻을 수 없는 값을 내부 자원으로부터 일찍 받아오는 것을 의미



      3) 제어 해저드
  • 명령어의 실행 순서를 변경하는 Branch , Jump 등 분기 명령어들로 인해 다른 명령어들이 실행 중에 한 명령어의 결과 값에 기반을 둔 결정을 할 필요가 있을 때 일어난다.
    • 분기 분의 경우 해당 명령어의 결과값이 나와야 다음 명령어가 수행되는데, 이때 해당 명령어가 끝날때까지 다음 명령어가 멈춤이 발생한다. 이것을 제어 해저드라고 한다.



  1. 슈퍼스칼라란?
  • 슈퍼스칼라는 CPU 내에 파이프라인을 여러 개 두어 명령어를 동시에 실행하는 기술이다

  • ILP를 최대한 적용하여 실행하면 CPU 처리 속도가 빨라진다.

    명령어 수준 병렬성 (Instruction level parallelism)
    : 소위 명령어를 겹치게 해주는 방식 전체를 ILP라고 한다.

    • 파이프라인이 하나라면 클럭당 하나의 명령어만 완료할 수 있었다 (다시 말해 IPC가 1이다).

    • 이 값을 높이려면 파이프라인을 여러 개 두어 명령어를 동시에 실행시켜야 한다.

      • 파이프라인이 2개라면 이상적으론 클럭마다 최대 2 개의 명령어를 처리할 수 있어 IPC=2가 된다.
  • 보통 슈퍼스칼라 프로세서는 동시에 처리(투입/완료)가 가능한 명령어 개수에 따라 N-이슈, N-와이드(wide), N-웨이(way) 슈퍼스칼라라고 표현한다.

    • 이상적으로는 N개의 명령어를 읽어 파이프 라인에 넣을 수 있지만(fetch), 실제로는 명령어 캐시의 제약, 명령어 사이의 의존성, 분기문 때문에 N개보다 작은 명령어만 넣을 수 있을 때가 일반적이다.

    • 명령어 사이에 데이터 의존성, 자원 의존성, 프로시저 의존성이 존재하는 경우에는 동시실행에 제한이 있다.



  1. 메모리 계층의 구조는 어떻게 되어있는가?



  1. RISC란? CISC와의 차이점은?

참고

  • CISC는 필요한 모든 명령어 셋을 갖추도록 설계된 마이크로프로세서에 관련되는 용어로서, 요구되는 능력을 가장 효율적인 방법으로 제공했었다. 이름에서 알 수 있듯이 컴퓨터에 주어진 CISC 명령은 매우 작기 때문에, 그 당시 메모리 부족의 문제점을 보완할 수 있었다.

  • RISC는 적은 수의 컴퓨터 명령어를 수행하도록 설계된 마이크로프로세서로서, 좀더 빠른 속도로 동작될 수 있다. 컴퓨터는 수행해야할 각 명령어 형태마다 트랜지스터와 회로들이 추가되어야 하기 때문에, 많은 수의 컴퓨터 명령어 셋을 갖춘 마이크로프로세서는 만들기도 복잡하고, 실행속도도 늦은 경향이 있다.




  1. 컴파일러란?
  • 컴파일러란 프로그래밍 언어로 작성된 인간의 의도(프로그램)를 기계(컴퓨터)가 이해하게 기계언어로 변환하는 변환기입니다.

    • 컴파일 언어의 종류 : C, C++, Java, C#

인터프리터 언어 (Interpreted Language)

  • 컴파일러를 거쳐 기계어로 변환되지 않고 바로 실행되는 프로그래밍 언어를 말한다.
  • 프로그래밍 언어 설계할 때 언어 설계자가 자신이 원하는 부분을 구현하는 데에 도움을 준다. 그래서 언어 설계 기간이 엄청나게 단축된다.
  • 프로그래밍 언어 설계할 때 언어 설계자가 자신이 원하는 부분을 구현하는 데에 도움을 준다. 그래서 언어 설계 기간이 엄청나게 단축된다.
    • 인터프리터 언어의 종류 : Python, Ruby, Perl, PHP, JavaScript



  1. 메모리의 구조는? (데이터, 스택, 힙~)



  1. write-through 방식이란 무엇인가?
  • Write-through는 데이터 손실 방지에 좋기 때문에 많은 애플리케이션, 특히 은행 및 의료 기기 제어에서 선호되는 데이터 저장 방법입니다.

  • Write-back은 업데이트가 일반적으로 캐시에만 기록되고 특정 조건 또는 지정된 간격에서만 주 메모리에 저장되기 때문에 시스템 성능을 가속화합니다. 덜 중요한 애플리케이션, 특히 데이터 양이 많은 경우 대체 방법이 알려져 있습니다.



  1. DMA 란?

참고

  • CPU를 우회하여 메모리 작동을 향상시키기 위해 입력/출력 장치가 주 메모리에서 직접 데이터를 받거나 보낼 수 있도록 하는 컴퓨터 시스템의 기능입니다. 이 프로세스는 DMA 컨트롤러로 알려진 칩에 의해 수행됩니다.

  • 즉 CPU의 개입을 최소화

    • DMA가 없으면 Data I/O가 끝날 때까지 CPU는 대기해야한다.
  • 입출력 요청이 있을때 CPU는 DMA controller에게 입출력 명령을 내리고 DMA controller는 그때부터 CPU의 간섭없이 독자적으로 입출력 작업을 수행.

    • 입출력 장치는 CPU를 거치지 않고 DMA controller를 통해서 바로 메모리를 access할수 있다.

    • DMA는 I/O장치로 하여금 단지 메모리 사용만 하게 하는 것이지 명령어 수행에 간여하는 것은 아님.

PIO는 DMA의 반대개념으로써, 장치들 사이에 전송되는 모든 데이터가 중앙처리장치를 거쳐가는 방식이다.

  • 프로그램 입출력(Programmed Input/Output, 줄여서 PIO)

I/O 장치를 제어하는 3가지 방법
1. 폴링
2. 인터럽트
3. DMA



  1. RAID 란?
  • RAID는 컴퓨터 디스크 저장소의 성능을 가속화하거나 보호하는 데 도움이 되는 방식으로 연결되고 설정된 하드 드라이브를 나타냅니다. 일반적으로 서버와 고성능 컴퓨터에서 사용됩니다.



profile
For the sake of someone who studies computer science