기술 면접 준비 (3) - Computer Architecture

모든 글은 다음 블로그를 참고하여 작성하였습니다.
https://gyoogle.dev/blog/


Cache Memory

속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말한다.

1
2
ex1) CPU 코어와 메모리 사이의 병목 현상 완화
ex2) 웹 브라우저 캐시 파일은, 하드디스크와 웹페이지 사이의 병목 현상을 완화

CPU가 주기억장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 다음에 이용할 때 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상시킨다.

속도라는 장점을 얻지만, 용량이 적기도 하고 비용이 비싼 점이 있다.

CPU에는 이러한 캐시 메모리가 2~3개 정도 사용된다. (L1, L2, L3 캐시 메모리라고 부른다)

속도와 크기에 따라 분류한 것으로, 일반적으로 L1 캐시부터 먼저 사용된다. (CPU에서 가장 빠르게 접근하고, 여기서 데이터를 찾지 못하면 L2로 감)

듀얼 코어 프로세서의 캐시 메모리 : 각 코어마다 독립된 L1 캐시 메모리를 가지고, 두 코어가 공유하는 L2 캐시 메모리가 내장됨

만약 L1 캐시가 128kb면, 64/64로 나누어 64kb에 명령어를 처리하기 직전의 명령어를 임시 저장하고, 나머지 64kb에는 실행 후 명령어를 임시저장한다. (명령어 세트로 구성, I-Cache - D-Cache)

  • L1 : CPU 내부에 존재
  • L2 : CPU와 RAM 사이에 존재
  • L3 : 보통 메인보드에 존재한다고 함

캐시 메모리 크기가 작은 이유는, SRAM 가격이 매우 비쌈

캐시 메모리 작동 원리

  • 시간 지역성
    • for나 while 같은 반복문에 사용하는 조건 변수처럼 한번 참조된 데이터는 잠시후 또 참조될 가능성이 높음
  • 공간 지역성
    • A[0], A[1]과 같은 연속 접근 시, 참조된 데이터 근처에 있는 데이터가 잠시후 또 사용될 가능성이 높음

CPU가 요청한 데이터가 캐시에 있으면 ‘Cache Hit’, 없어서 DRAM에서 가져오면 ‘Cache Miss’


고정 소수점 & 부돈 소수점

고정 소수점 (Fixed Point)

-3.141592는 부호(-)와 정수부(3), 소수부(0.141592) 3가지 요소 필요함

  • 장점 : 실수를 정수부와 소수부로 표현하여 단순하다.
  • 단점 : 표현의 범위가 너무 적어서 활용하기 힘들다. (정수부는 15bit, 소수부는 16bit)

부동 소수점 (Floating Point)

실수를 가수부 + 지수부로 표현한다.
가수 : 실수의 실제값 표현
지수 : 크기를 표현함. 가수의 어디쯤에 소수점이 있는지 나타냄

  • 장점

    • 표현할 수 있는 수의 범위가 넓어진다. (현재 대부분 시스템에서 활용 중)
  • 단점

    • 오차가 발생할 수 있다. (부동소수점으로 표현할 수 있는 방법이 매우 다양함)

패리티 비트 & 해밍 코드

패리티 비트

정보 전달 과정에서 오류가 생겼는 지 검사하기 위해 추가하는 비트를 말한다.
전송하고자 하는 데이터의 각 문자에 1비트를 더하여 전송한다.

전체 비트에서 (짝수, 홀수)에 맞도록 비트를 정하는 것

  • 짝수 패리티일 때 7비트 데이터가 1010001라면?

    1이 총 3개이므로, 짝수로 맞춰주기 위해 1을 더해야 함
    답 : 11010001 (맨앞이 패리티비트)

해밍 코드

데이터 전송 시 1비트의 에러를 정정할 수 있는 자기 오류정정 코드를 말한다.
패리티비트를 보고, 1비트에 대한 오류를 정정할 곳을 찾아 수정할 수 있다. (패리티 비트는 오류를 검출하기만 할 뿐 수정하지는 않기 때문에 해밍 코드를 활용)

  • 방법

    • 2의 n승 번째 자리인 1,2,4번째 자릿수가 패리티 비트라는 것으로 부터 시작한다. 이 숫자로부터 시작하는 세개의 패리티 비트가 짝수인지, 홀수인지 기준으로 판별한다.
  • 짝수 패리티의 해밍 코드가 0011011일때 오류가 수정된 코드는?

  1. 1, 3, 5, 7번째 비트 확인 : 0101로 짝수이므로 ‘0’

  2. 2, 3, 6, 7번째 비트 확인 : 0111로 홀수이므로 ‘1’

  3. 4, 5, 6, 7번째 비트 확인 : 1011로 홀수이므로 ‘1’

역순으로 패리티비트 ‘110’을 도출했다. 10진법으로 바꾸면 ‘6’으로, 6번째 비트를 수정하면 된다. 따라서 정답은 00110’0’1이다.


ARM 프로세서

프로세서란?

메모리에 저장된 명령어들을 실행하는 유한 상태 오토마톤

ARM : Advanced RISC Machine

  • 즉, 진보된 RISC 기기의 약자로 ARM의 핵심은 RISC이다.
  • RISC : Reduced Instruction Set Computing (감소된 명령 집합 컴퓨팅)
  • 단순한 명령 집합을 가진 프로세서가 복잡한 명령 집합을 가진 프로세서보다 훨씬 더 효율적이지 않을까?로 탄생함

ARM의 장점은?

소비자에 있어 ARM은 ‘생태계’의 하나라고 생각할 수 있다. ARM을 위해 설계된 프로세서는 오직 ARM 프로세서가 탑재된 기기에서만 실행할 수 있다. (즉, x86 CPU 프로세서 기반 프로그램에서는 ARM 기반 기기에서 실행할 수 없음)

따라서 ARM에서 실행되던 프로그램을 x86 프로세서에서 실행되도록 하려면 (혹은 그 반대로) 프로그램에 수정이 가해져야만 한다.

하지만, 하나의 ARM 기기에 동작하는 OS는 다른 ARM 기반 기기에서도 잘 동작한다. 이러한 장점 덕분에 수많은 버전의 안드로이드가 탄생하고 있으며 또한 HP나 블랙베리의 태블릿에도 안드로이드가 탑재될 수 있는 가능성이 생기게 된 것이다.

(하지만 애플사는 iOS 소스코드를 공개하지 않고 있기 때문에 애플 기기는 불가능하다)

ARM을 만드는 기업들은 통해 전력 소모를 줄이고 성능을 높이기 위해 설계를 개선하며 노력하고 있다.