TeamCoook / iOSInterviewQuestions

✅ iOS 개발자 기술 면접 대비
18 stars 0 forks source link

[레벨 0] `1주차` 1. 컴퓨터 구조와 관련하여 CPU, RAM, 저장장치의 역할과 상호 작용에 대해 설명해주세요. #1

Open longlivedrgn opened 3 months ago

longlivedrgn commented 3 months ago

DUE DATE: 4/16 23:59

soo941226 commented 3 months ago

1) 캐시 메모리의 개념과 종류, 역할에 대해 설명해주세요.

과학적인 접근은 책을 다시 들여다보지 않으면 솔직히 잘 기억이 나지 않는데요. 일단 아는 선에서, 원할한 설명을 위해, 캐시 메모리에 앞서 캐시가 무엇인지 설명을 할 필요가 있을 것 같습니다. 캐시란 데이터를 읽는 시간을 줄이기 위해, 데이터를 읽는 주체와 가까운 곳에 데이터를 저장, 위치시켜놓는 것을 이야기합니다. 예를 들어 원래라면 100m를 왔다갔다 해야할 것을 1m만 왔다갔다 하게 함으로써 전체적인 속도를 향상시키는 것에 그 목적이 있습니다. 캐시 메모리란 이러한 기법에 사용되는 장치 및 공간을 이야기합니다.

앞서 데이터를 읽는 주체라고 표현했는데, 데이터를 읽는 주체 중에 대표적인 것은 CPU입니다. 즉 당연히 CPU 캐시가 존재하며, CPU 캐시 내에서도 CPU와 얼마나 가까운지에 따라 레벨이 존재하고, 크기와 속도가 상이합니다. CPU는 일반적으로 이러한 CPU 캐시에서 먼저 데이터를 찾고 만약 발견하지 못한다면, 미스가 난다면, 메모리에 접근하게 됩니다.

이러한 맥락으로 GPU와 디스크에도 캐시가 존재합니다. 또 거시적인 차원에서, 이렇게 장치 내에서만 캐싱이 이루어지는 게 아니라, 캐싱을 위한 컴퓨터도 존재하곤 합니다. 말그대로 캐싱이 곧 서비스인 캐싱 서버인데요. 유튜브처럼 동일한 데이터에 대한 IO 작업이 매우 빈번하고, 또 거대한 콘텐츠 플랫폼은 이를 하나의 아키텍처로 만들어 엣지 컴퓨팅이라는 이름으로 사용하는 것으로 알고 있습니다.

1-a) 캐싱이 좋다면 항상 사용하는 게 좋나요?

결론부터 말하면 쓰면 좋긴 합니다. 다만 이는 개발비용을 증가시킬 수 있기 때문에, 개발 상황에 맞추어 사용할 필요성이 있습니다. 그래서 저는 보통 고도화 작업에 캐싱을 도입하는 편입니다. 앞서 말씀드린 개발비용이 증가하는 부분은 크게 두 가지 입니다.

하나는 캐싱을 할 수 있는 공간이 유한하다는 것입니다. 이에 따라 캐싱하는 자원들의 가치를 비교해서 어떤 것은 남기고 어떤 것은 버릴지를 결정할 필요성이 생깁니다. 자원의 성격에 따라 이러한 비교 알고리즘도 종류가 나뉘는데 가장 최근에 사용된 것, 가장 빈번하게 사용되는 것 등 다양한 교체 방법이 있습니다.

또 하나는 캐싱을 한 자원이 다른 맥락에서 수정될 수 있다는 것입니다. 수정된 자원이 캐시 메모리에 바로바로 적용이 된다면 모르겠으나, 서버-클라이언트 구조로 개발이 되는 일반적인 앱의 경우 그 유효성을 어느 한 곳에서만 결정하기는 어려울 수 있습니다. 특히 빈번하게 바뀌는 자원의 경우 캐싱을 하는 것보다 오히려 이를 검증하는 오버헤드가 낭비로 이어질 수 있습니다. HTTP 메소드 중에는 특히 이런 검증에 유용한 HEAD라는 메소드를 지원하기도 합니다.

2) CPU 아키텍처의 종류(예: ARM, x86)와 특징에 대해 설명해주세요.

프로세서가 어떤 명령어셋을 사용하는지에 따라 나뉘는 것으로 알고 있습니다. x86 명령어가 상대적으로 더 많고, 이를 처리하기 위해 더 많은 유닛과 에너지가 필요한 것으로 알고 있습니다. 엣날에는 상대적으로 x86 하드웨어와 ARM 하드웨어의 성능격차가 매우 심해서 보통 x86으로 만들어졌는데, 최근에는 기술이 매우 좋아지고 하드웨어도 싸게 나와서, 그 차이가 심하지 않고 오히려 ARM이 더 좋은 부분도 많아지고 트렌드가 된 것으로 알고 있습니다.

3) iOS 기기에서 사용되는 AP(Application Processor)의 특징과 역할에 대해 설명해주세요.

잘 모르겠네요. 공부했던 '운영체제'라는 학문이나 하드웨어들이 대부분 기준이 데스크톱 컴퓨터였는데. 생각해보니까 모바일 기기의 구성 유닛은 한번도 제대로 관심을 안가졌네요

아 찾아보니까 SoC를 AP라고도 부르나보네요.

qwerty3345 commented 3 months ago

캐시 메모리의 개념과 종류, 역할

CS 에서 CPU의 캐시 메모리

Image1 Image2
image image

iOS 에서의 캐시

질문의 의도는 아닌 것 같지만, iOS 에서의 캐시 내용도 함께 알아보며 정리합니다.

  • iOS에서는 메모리캐시, 디스크캐시 방식을 통해 앱 사용자들에게 더 빠릿빠릿한 앱 경험을 제공 해 주고, 서버 비용을 절감 해 주기도 합니다.
  • 메모리 캐시 방식으로는 주로 NSCache 를 사용하는데, 단순히 Dictionary를 통해 캐싱을 구현할 시 스레드세이프, 캐시 메모리 제한 등의 문제를 내부적으로 잘 처리하도록 구현 해 놓은 방식입니다.
  • 디스크 캐시 방식으로는 주로 FileManager 를 사용하며, 디바이스 앱 용량에 남는 방식이기 때문에.. 만료 정책 같은 것들을 잘 수립해서 아주 오랫동안 사용하지 않는 캐시 파일이 무한정 남아있지 않도록 해주는 것이 좋습니다.

CPU 아키텍처의 종류(예: ARM, x86)와 특징

1. ARM (Advanced RISC Machine)

2. x86 아키텍처 (Intel and AMD)

iOS 기기에서 사용되는 AP(Application Processor)의 특징과 역할

longlivedrgn commented 3 months ago

1. 컴퓨터 구조와 관련하여 CPU, RAM, 저장장치의 역할과 상호 작용에 대해 설명해주세요.

CPU는 메모리에 있는 데이터를 가져와서 명령어를 실행하고, 해석한다. 근데, CPU는 보조기억장치에 바로 접근이 불가능하다.

따라서, RAM에는 실행할 대상을 지정하고, 보조기억장치에는 저장할 대상을 지정해놓는다.

그리고, CPU가 실행하고 싶은 프로그램이 보조기억장치에 있다면 이를 RAM으로 복사하여 저장한 뒤 실행한다.

캐시 메모리의 개념과 종류, 역할에 대해 설명해주세요.

기본적으로 CPU가 메모리에 접근하는 시간은 CPU의 연산속도보다 느리다.

따라서 캐시 메모리가 필요한 것이다

저장 장치 계층 구조

이렇게 CPU가 메모리에 접근하는 속도는 매우 느린데, 그럼에도 CPU는 메모리에 빈번하게 접근을 해야된다. 그래서 캐시 메모리가 등장하였다.

캐시 메모리는

그렇다면 캐시 메모리는 어떤 식으로 CPU에서 사용할 데이터를 예측해서 메모리에서 빼와서 가지고 있을까?

iOS에서의 캐시 전략은?

그리고 Memory Cache 뿐만 아니라, Disk Cache 또한 존재한다.

Memory Cache

Disk Cache

CPU 아키텍처의 종류(예: ARM, x86)와 특징에 대해 설명해주세요.

간단하게 정리

iOS 기기에서 사용되는 AP(Application Processor)의 특징과 역할에 대해 설명해주세요.

llimental commented 3 months ago
1. 캐시 메모리의 개념과 종류, 역할에 대해 설명해주세요. ### 1-1) 캐시 메모리의 개념 - CPU의 빠른 연산 속도와 메모리에 접근하는 속도의 차이를 줄이기 위한 저장 장치 - 속도가 비교적 빠른 대신 용량이 작고 가격이 비쌈 ### 1-2) 캐시 메모리의 종류 - 계층: CPU와 가까운 순서대로 L1 ~ L3 캐시 계층 구성. 멀어질수록 용량이 커지고, 속도와 가격은 내려감 - CPU 캐시 메모리: CPU 구조에 메모리로 사용하도록 구성된 하드웨어 캐시. 메인 메모리에서 가장 자주 사용되는 위치의 데이터를 갖고 있는 크기는 작지만 빠른 메모리. 주로 프로세서 내부에 위치하며 주로 데이터와 명령어를 저장 - GPU 캐시 메모리: GPU 구조에서 사용되고, GPU는 대규모 데이터 셋을 병렬로 처리하는 데 특화되어 있으며 GPU 캐시는 이러한 병렬 처리 과정에서 계산에 필요한 데이터를 빠르게 불러오고 저장하여 처리 속도를 향상시키는 역할을 함 - SSD 캐시 메모리: 입출력 작업에서 임의로 배치된 데이터에 자주 접근해야 하는 경우 성능을 향상시키는 역할(랜덤 액세스 시간 단축) - Digital Signal Processor 캐시 메모리: 디지털 신호 처리기에서 작업에 필요한 데이터 및 명령을 빠르게 접근할 수 있도록 하는 메모리 - TLB(Translation Lookaside Buffer): 가상 주소와 실제 주소 간의 변환을 캐싱하는 데 사용되는 하드웨어 캐시. 프로세서가 메모리 주소를 참조할 때 TLB가 해당 주소의 물리적 위치를 찾아줘 프로세서가 메모리에 접근할 때 필요한 시간을 줄이는 역할을 함 ### 1-3) 캐시 메모리의 역할 - 메모리와 CPU 사이에서 필요로 하는 데이터를 보다 빠르게 전달하기 위해 CPU가 필요로 할 데이터를 메모리에서 일부 복사하여 저장 - 이를 통해 프로세서가 데이터를 처리하는 동안 발생하는 메모리 접근 시간을 줄이고, 전체 시스템의 성능을 향상시킴 - 프로세서가 자주 사용하는 데이터와 명령을 임시로 저장하여(참조 지역성 원리, 캐시 히트) 필요할 때 빠르게 제공함으로써 프로세서의 대기 시간을 최소화. 이를 통해 프로그램의 실행 속도를 향상시키고 전력 소모를 줄일 수 있음 ### 1-4) 참조 지역성 원리 - 캐시 메모리는 용량이 작기 때문에 메모리 데이터 전체를 가져올 수 없음 - CPU가 사용할 것 같은 데이터를 예측해야 하는데 그 예측을 하기 위한 원칙이 참조 지역성 원리이며 다음 두 가지 경향을 바탕으로 함 - 1) CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있음(시간 지역성) - 2) 접근한 메모리 공간 근처를 접근하려는 경향(보통 관련 데이터가 한 곳에 모여 저장되기 때문. 공간 지역성) ### 1-5) 캐시 히트/캐시 미스 - 자주 사용될 것으로 예측한 데이터가 실제로 맞아 CPU에서 활용될 경우 캐시 히트 - 예측이 틀려 필요한 데이터를 메모리에서 직접 가져와야 하는 경우 캐시 미스(성능 하락) - 캐시가 히트되는 비율을 캐시 적중률이라고도 하며, 캐시 히트 횟수를 캐시 히트 횟수 + 캐시 미스 횟수로 나눠 계산할 수 있음
2. CPU 아키텍처의 종류(예: ARM, x86)와 특징에 대해 설명해주세요. ### 2-1) CPU 아키텍처의 종류 - x86(CISC): 대부분의 개인용 컴퓨터와 서버에 사용되는 아키텍처. 32비트와 64비트를 지원 - ARM(RISC): 주로 모바일 기기와 임베디드 시스템에서 사용되는 아키텍처. 저전력과 고성능을 제공 - MIPS(RISC): 임베디드 시스템 및 네트워크 장비와 같은 특수한 용도의 장치에서 사용되는 아키텍처 - CISC(Complex Instruction Set Computing): 명령어 셋이 복잡하고 다양한 기능을 가짐. 하나의 명령어가 여러 개의 기계어 사이클을 사용하여 실행될 수 있고, 주로 메모리에 저장되며 상대적으로 복잡한 명령어 집합을 가지고 있어서 각 명령어가 많은 수의 마이크로 오퍼레이션으로 분해될 수 있음 - RISC(Reduced Instruction Set Computing): 명령어 셋을 간소화하여 설계. 간단하고 기본적인 명령어 집합을 가지고 있으며, 명령어의 실행 시간이 짧은 특징을 지님. 명령어의 길이와 형식이 균일하며, 대부분의 명령어가 한 개의 기계어 사이클 내에 실행. 주로 레지스터에 저장되며, 복잡한 명령어를 실행하기 위해서는 여러 단계의 명령어를 조합하여 사용해야 함 - 위 두 방식은 명령어 셋의 복잡성과 실행 방식의 차이로 후자가 일반적으로 더 단순하고 효율적인 구조를 가지며, 더 높은 성능을 제공할 수 있음 ### 2-2) CPU 아키텍처의 특징 - x86(CISC): 주로 Intel, AMD 프로세서에서 사용(대부분의 PC 및 서버), 주로 64비트 아키텍처가 사용되며 호환성이 높고 다양한 소프트웨어 및 운영 체제를 지원 - ARM(RISC): 주로 모바일 기기 및 임베디드 시스템에서 사용되며 에너지 효율성이 높음. 다양한 성능과 전력 요구에 맞게 다양한 버전 및 코어가 존재하고, 대부분의 스마트폰 운영 체제(iOS, Android)는 이를 기반으로 함(A Series, M Series, 엑시노스, 스냅드래곤 구 8CX 현 X Elite 등)
3. iOS 기기에서 사용되는 AP(Application Processor)의 특징과 역할에 대해 설명해주세요. ### 3-1) iOS 기기에서 사용되는 AP의 특징 - iPhone, iPad 에서 사용되는 A 시리즈, Mac, iPad, Vision 에서 사용되는 M 시리즈, Watch, HomePod 에서 사용되는 S 시리즈, 에어팟, Watch 등에서 쓰이는 W 시리즈, H 시리즈 등이 있음. - Apple이 제조한 칩셋을 사용하고 있음. 하드웨어와 소프트웨어를 둘 다 잡고 있는 만큼 최적화를 꾀할 수 있어 고성능과 효율성을 결합하여 뛰어난 성능을 제공하고 전성비 역시 챙길 수 있음 - A11 바이오닉부터 애플이 개발한 GPU 아키텍처를 AP에 사용함과 동시에 애플이 개발한 뉴럴 엔진 NPU를 탑재. 이후로 NPU를 지속적으로 발전시키며 생체 인식, AI, Core ML, 카메라 엔진 등에 사용 - 자체 개발이기에 다이 사이즈에 국한받지 않고 성능 및 전성비 향상을 위한 변화를 꾀하기 쉬운 AP. 애플 제품에만 사용되기에 다이 사이즈가 타사에 비해 큰 케이스, 캐시 사이즈가 큰 케이스 등 다양한 시도를 해왔음 - 최신 AP 기준 CPU, GPU, NPU, 메모리 및 내장 엔진(ProRes 가속 엔진, 디스플레이 엔진, AV1 디코딩 엔진)으로 구성됨 - 이는 여러 벤더의 여러 기기에 사용되는 타사 AP와 구별되는 차이. 다만 멀티코어와 그래픽은 상향평준화가 되고 있음 ### 3-2) iOS 기기에서 사용되는 AP의 역할 - 애플리케이션 실행 - 시스템 관리(배터리, 메모리, 네트워크 등) - 그래픽 처리(게임, 비디오, 인터페이스 등) - 보안 기능 제공 - 인공 지능 및 머신 러닝 작업 지원 - 센서 관리 등
ohdair commented 3 months ago

컴퓨터 구조

컴퓨터는 크게 세 가지로 나눌 수 있다.

CPU

실제 계산을 처리하는 컴퓨터 부품이다. 즉, 연산장치이다. 프로그램에 속해있는 명령어들을 수행하는 역할이다.

CPU가 하나의 명령(Operation)을 처리하기 위해서 메모리에서 명령을 가져오고 산술/논리 연산하여 명령을 수행한다. 수행된 명령어를 메모리에 돌려주고 다음 명령어를 가져온다.

RAM

메모리라고 부르는 것으로 실행할 명령어와 데이터를 저장한다. 지금 실행되고 있는 프로그램의 명령들을 작업에 필요한 작업대 역할이다. 데이터를 저장하는 short-term memory로 사용된다.

DISK

CPU 입장에서는 메모리가 아닌 것은 전부 I/O이다.

저장장치 DISK는 RAM과 다르게 비휘발성 메모리이다. 전력이 없어도 데이터는 반영구적으로 저장된다.


캐시 메모리의 개념과 종류, 역할

실제 메모리와 CPU 사이에서 빠르게 전달을 위해 미리 데이터들을 저장해주는 좀 더 빠른 메모리이다. 일반적으로 CPU 칩에 직접 통합되거나 별도의 BUS 상호 연결이 있는 별도의 칩에 배치되기 때문에 CPU 메모리라고도 한다. 따라서 프로세서에 대한 접근성이 더 좋고, 프로세서와 물리적으로 가깝기 때문에 효율성을 높일 수 있다.

프로세서에 가깝기 위해서 메인 메모리보다 훨씬 작다. 결과적으로 저장 공간이 적다. 대신 캐시 메모리는 RAM보다 10~100배 빠르게 작동한다.

종류

일반적인 세 가지 캐시 수준이 있다.

L1: Lightning-Fast Access

매우 빠르지만 상대적으로 작으며 일반적으로 프로세서 칩에 CPU 캐시로 내장된다.

자주 사용되는 명령어와 데이터를 저장하여 CPU가 빠르게 액세스할 수 있도록 하는 것이다. Central Processing UnitCPU 가 자주 액세스하는 명령어와 데이터의 숨겨진 캐시라고 생각하면 된다.

L2: Bridging the Gap

L1보다 용량이 더 큰 경우가 많다. CPU에 내장될 수도 있고 별도의 칩이나 보조 프로세서에 있을 수도 있고 캐시와 CPU를 연결하는 고속 대체 시스템 버스가 있을 수도 있다. 이렇게 하면 메인 시스템 버스의 트래픽으로 인해 속도가 느려지지 않는다.

자주 요청되는 데이터와 명령어를 위한 더 많은 저장 공간을 제공하여 CPU가 메인 메모리에 액세스해야 하는 필요성을 최소화한다. 일부 멀티코어 아키텍처에서는 L2 캐시를 CPU 코어 간에 공유할 수 있다.

L3: The Shared Resource

L1 및 L2의 성능을 향상시키기 위해 개발된 특수 메모리이다. L1과 L2는 L3보다 훨씬 빠를 수 있지만, 일반적으로 L3는 DRAM의 2배 속도이다.

멀티 코어 프로세서에서 L3 캐시는 모든 CPU 코어의 공유 리소스이다. 일반적으로 사용되는 데이터와 명령어를 위한 공유 캐시 공간을 생성하여 코어 간에 데이터를 효율적으로 공유할 수 있도록 한다. 이는 멀티 스레드 및 멀티 코어 프로그램에서 CPU 성능을 높게 유지하는 데 매우 중요하다.

Cache memory

CPU는 데이터를 처리할 때 캐시 메모리를 먼저 살펴보고 캐시 메모리에서 데이터를 찾으면 시간이 많이 걸리는 데이터 읽기를 수행할 필요가 없다. 캐시 메모리는 데이터 Locality(지역성)의 원리를 사용한다. 또한, CPU가 데이터를 요청했을 때, 캐시 메모리가 해당 데이터를 가지고 있다면 이를 Cache Hit라 부르고, 데이터가 없어 DRAM에서 가져와야 한다면 Cache Miss라고 부른다. 캐시 미스 발생 시, 처리 방법은 캐시 정책에 따라 다르며, 데이터를 읽어 오는 시점으로 사용하기도 한다.

근래에는 아래 그림과 같은 형태이다. |350 출처: https://www.researchgate.net/figure/L1-and-L2-cache-memories_fig5_322420547

|300 출처: https://www.insidetheiot.com/cache-in-multicore-systems/

Locality(지역성)의 원리

시간 지역성은 어떤 메모리 주소에 접근했을 때, 잠시 후에 이와 동일한 주소에 접근할 확률이 높으면 시간 지역성이 좋다고 표현한다. 반복문에서 사용하는 조건 변수처럼 한 번 참조된 데이터를 또 참조하게 될 가능성을 의미한다.

공간 지역성은 어떤 메모리 주소에 접근했을 때, 잠시 후 그 근처의 메모리 주소에 접근할 확률이 높으면 공간지역성이 좋다고 표현합니다. 배열에 있는 데이터를 연속으로 접근할 때 근처에 있는 데이터를 잠시 후 사용될 가능성을 의미한다.

이름 그대로 시간과 공간을 기준으로 다음번 메모리 접근 때 접근할 가능성이 높은 메모리 주소를 지역성이 좋다라고 표현한다.

[번외] 참조의 지역성의 효율성 가장 유명한 예시로 배열 곱셈이 있다.

for i in 0...n {
  for j in 0...m {
      for k in 0...p {
            C[i][j] = C[i][j] + A[i][k] * B[k][j]
        }
    }
}

배열의 마지막 차원에 원소를 연속적으로 정렬하는 언어에서는 루프 순서인 j와 k의 위치를 바꾸는 것만으로도 엄청난 속도 증가한다. 특히, 원소가 10만 개가 넘거나 L1, L2 캐시가 감당하지 못할 만큼 큰 배열의 경우 엄청난 효율을 자랑한다.

첫 번째 코드는 A[i][k] 배열이 캐시에 있다. k가 마지막 차원에서 연속적으로 증가하기 때문이다. 하지만 B[k][j]는 첫 번째 차원에서 k가 증가하므로 캐시 미스가 나게 된다. 

// Cache Hit를 올리는 구조의 반복문
for i in 0...n {
  for k in 0...p {
      for j in 0...m {
            C[i][j] = C[i][j] + A[i][k] * B[k][j]
        }
    }
  }

CPU 아키텍처의 종류와 특징

Intel은 16비트 8086 마이크로프로세서를 출시하면서 86을 사용한 여러 후속 제품이 출시되었다. x86은 일반적으로 32비트 아키텍처를 나타낸다. x86 CPU에는 많은 명령어 집합이 존재한다. 단일 명령으로 전체 계산(ex: 곱하기)을 완료하거나 데이터 청크를 메모리의 한 위치에서 다른 위치로 직접 이동할 수 있는 것들이다. 별 것 아닌 것처럼 느껴져도 곱하고 이동하려면 낮은 수준에서 많은 명령이 필요하다. 이러한 유형의 명령 집합이 있는 처리장치CISCComplex Instruction Set Computing라고 한다. 강력한 명령어는 공간과 전력을 차지하는 더 많은 트랜지스터가 필요하다는 것을 의미한다.

에너지 효율성과 CPU 아키텍처의 명령어 세트를 단순화하는 방법을 모색하다가 RISCReduced Instruction Set Computer 프로세서의 설계로 이어졌다. 어셈블리 언어 프로그래머의 작업이 더 복잡해지지만 프로세서의 작업이 간소화되는 효과가 있다. RISC 프로세서와 고급 RISC 시스템을 사용하면 CPU 코어가 아닌 컴파일러로 복잡성을 푸시하여 복잡한 작업을 수행한다.

x86은 매우 빠른 컴퓨팅 성능을 갖는 경향이 있으며 프로그래밍 및 명령 수에서 더 명확하거나 단순하지만 트랜지스터가 많은 더 크고 더 비싼 칩을 희생해야 한다. ARM은 특정 유형의 작업에 대해 매우 빠를 수 있지만 작업이 더 복잡하고 작업을 정의하고 실행하는 데 더 많은 노력이 명령 집합이 아닌 프로그래밍에 푸시되기 때문에 개별 명령에 대한 반복적인 주기로 인해 속도가 느려질 수 있다.

위와 같은 차이로 ARM은 오랫동안 낮은 에너지 소비와 낮은 열 발생을 포함한 전반적인 리소스 관리에 중점을 두었다. ARM 아키텍처에는 단순화된 냉각 시스템이 없는 경향이 있다. 배터리 수명, 크기, 냉각 요구 사항 제거 그리고 중요한 비용에 초점이 맞춰진다.

수년 동안 데스크탑 또는 고성능 컴퓨팅에서는 x86이 적합하고 모바일 장치에는 ARM 칩이 적합하다고 이어졌다. 2020년 Apple의 M1 칩이 출시하고 2022에 M2 시리즈를 출시하면서 인식이 바뀌었다. 그러나 ARM 칩에서는 x86 아키텍처용으로 작성된 소프트웨어를 단순히 실행할 수는 없다. Apple이 이를 가능하게 한 이유는 실행할 수 있도록 수천 명의 개발자가 도구를 만들었기 때문이다.

iOS 기기에서 사용되는 AP(Application Processor)의 특징과 역할

Application Processor 스마트폰, 태블릿 등 전자기기에 장착되어 명령을 해석하고 시스템을 제어하는 두뇌 역할을 하는 시스템 반도체이다. 일반적으로 PC는 CPU, 메모리, 그래픽 카드, 하드 디스크 등 연결되어 있는 반면 모바일에서는 CPU처럼 작동할 수도 있고 모든 칩셋 기능을 수행할 수도 있다. 기본적으로 SoCsystem on chip 이다.

[!import] SoC 완전 구동이 가능한 제품과 시스템이 한 개의 칩에 들어있는 것을 말한다. 즉, 하나의 칩 내에서 CPU, GPU, RAM, ROM, 컨트롤러 등의 다양한 역할을 구현하는 체제이다. 우리의 뇌와 같은 존재라고 생각하면 된다.

OMAP4470 이라는 AP를 보더라도 GPU, CPU 그 외 다양한 기능이 집약되어 있다. |600

Apple에서는 Apple Silicon 은 ARM 호환 CPU 아키텍처를 설계해 사용하고 있다. GPU 아키텍처가 차지하는 부분도 타 AP보다 큰 사이즈로 그래픽 성능이 좋다.

iOS 운영 체제와의 통합으로 원활한 호환성과 최적의 성능을 제공하면서 뛰어난 사용자 경험으로 이어지게 된다. 에너지 효율에 중점을 맞춰 성능과 전력 소비의 균형을 맞추도록 최적화되어 있어 배터리 수명이 연장된다.

SunnnySong commented 3 months ago

1️⃣ 캐시 메모리의 개념과 종류, 역할에 대해 설명해주세요.

캐시 메모리란?

: 빠른 응답 시간을 위해 자주 액세스하는 정보를 저장하는 데 사용되는 데이저 저장소 유형이다.

종류

RAM(= Random Access Memeory, 시스템 메모리) 이란?

: 프로그램이 실행되는 동안 필요한 정보를 저장하는 컴퓨터 메모리이다. 저장된 데이터를 순차적이 아닌 임의의 순서로 액세스 할 수 있는 데이저 저장소이다.

2️⃣ CPU 아키텍처의 종류(예: ARM, x86)와 특징에 대해 설명해주세요.

CPU 아키텍처 종류

3️⃣ iOS 기기에서 사용되는 AP(Application Processor)의 특징과 역할에 대해 설명해주세요.

AP (Application Processor) 역할

: iphone, mac 등 디바이스의 프로세서를 가리키는 용어이다.

특징

JasonLee0223 commented 3 months ago
캐시 메모리의 개념과 종류, 역할에 대해 설명해주세요.
캐시는 일반적으로 데이터를 임시로 저장하는 공간으로, 디바이스의 주 메모리보다 접근 속도가 빠릅니다. iOS에서 크게 Disk(디스크) 캐시와 Memory(메모리) 캐시로 나뉩니다.
디스크 캐시는 파일 시스템에 데이터를 저장하는 방식으로, 앱이 종료된 후에도 데이터가 유지됩니다. 이미지나 네트워크 응답과 같은 비교적 크기가 큰 데이터를 디스크에 저장한다는 특징이 있으며 예시로는 `URLCache`를 들 수 있습니다.
메모리 캐시는 장치의 RAM에 데이터를 저장하며, 이는 디스크 캐시보다 훨씬 빠르게 접근할 수 있습니다. 하지만 앱이 백그라운드로 전환되거나 종료되면 메모리에서 데이터가 사라지므로 작은 데이터 조각이나 자주 접근하는 데이터에 이상적입니다. 예시로는 `NSCahce`를 들 수 있습니다.
CPU 아키텍처의 종류(예: ARM, x86)와 특징에 대해 설명해주세요.
현 시대에는 다양한 CPU 아키텍쳐가 존재하지만 가장 대중적으로 많이 사용되는 아키텍쳐는 CISC와 RISC 방식을 채택하고 있습니다. CISC는 복잡한 명령어 집합을 사용하여 각 명령어가 더 많은 작업을 수행할 수 있도록 설계된 아키텍처로서 개인용 PC와 같은 Window, MS-DOS와 같은 Intel 제조사의 x86 아키텍쳐가 대표적입니다.
다음 RISC 방식은 간단하고 속도가 빠른 명령어 집합을 사용하여, 프로세서가 빠르게 명령어를 처리할 수 있도록 설계된 아키텍처입니다. 영국의 ARM 개발사에서 설계되었으며 임베디드, 모바일, MAC 등 다양한 분야에서 사용되어지고 있으며, 애플에서 M1 프로세서 기반의 노트북을 처음 선보이며 모바일 뿐 아니라 PC에서도 사용할 수 있는 아키텍처라는 것이 큰 화제였습니다.
iOS 기기에서 사용되는 AP(Application Processor)의 특징과 역할에 대해 설명해주세요.
AP는 간단하게 사용자가 휴대하고 다니는 스마트폰, 태블릿 PC 등의 메인 칩을 말하는 것으로 iOS 운영체제 및 다양한 어플리케이션을 구동시키며, 사용자와의 인터페이스인 화면으로 부터 컨트롤하는 기능을 하나의 칩에 모두 포함하여 만든 것으로 SoC(System-On-Chip)이라고 합니다. 애플 실리콘이라는 단어로 좀 더 친숙하게 불리기도 합니다. 위에서 말한 ARM 아키텍쳐를 기반으로 설계되었으며 최근 아이폰 15프로 및 프로 맥스에 들어간 칩으로 아이폰 최초 3나노 공정으로 TSMC에서 제작되었습니다.
ueunli commented 3 months ago

AP의 특징과 역할

↘︎ Application Processor ↘︎

  • iOS 기기에서 사용되는 프로세서
  • 주로 애플이 자체적으로 설계하고 제조하는 칩셋인 A시리즈 칩을 가리킴
  • 보안 기능이 통합되어 있음
  • ⇒ iOS 기기의 보안 강화
  • Secure Enclave, Touch ID, Face ID 등
  • iOS 운영 체제와 밀접하게 통합됨
  • ⇒ 효율적인 메모리 관리
  • 애플은 하드웨어와 소프트웨어를 같이 개발하기 때문

    캐시 메모리의 개념과 종류, 역할

    ↘︎ 효율적인 메모리 관리 ↘︎

  • AP가 iOS에게 캐시 메모리를 요청하면 iOS는 AP가 필요로 하는 캐싱 작업을 수행(적절한 메모리 공간을 할당하고 관리)
  • iOS는 AP와 협력하여 메모리를 효율적으로 관리하고, 캐시된 데이터를 적절히 활용하여 성능을 최적화
  • (이제부터 위 두 문장의 'AP'를 'cpu'로, 'iOS'를 '운영체제'로 치환하여 읽어보자)
  • '캐시 메모리'란, cpu가 자주 액세스하는 데이터나 명령어를 저장한 것으로, 주기억장치와 부기억장치 간의 속도차이를 극복하기 위해 사용됨
  • 'cpu ~ 주기억장치' 중 어느 지점에 위치하는지(와 그에 따른 속도차이)에 따라 3종류로 나뉨(L1, L2, L3)
  • 시스템 성능 향상과 메모리 효율성 향상에 지대한 역할을 하며, 이를 어떻게 구성하고 활용하느냐에 따라 앱(프로세스)의 성능과 사용자 경험이 달라짐

    CPU 아키텍처의 종류와 특징

    ↘︎ AP는 CPU ↘︎ ↘︎ '운영체제'는 'CPU'와 협력하여 메모리를 ... ↘︎

  • 예시로 든 arm, x86을 보면 arm64, x86_64가 떠오름
  • 뒤의 '64'는 운영체제의 '00비트'를 말함
  • 운영체제와 cpu 각각의 성능과 구조는 서로의 것과도 밀접한 관련
  • 32비트와 64비트는 컴퓨터 시스템이 한 번에 처리할 수 있는 데이터의 크기
  • x86 아키텍처 키워드
  • Intel, AMD 등
  • 16bit → 32bit → 64bit
  • Windows, macOS, Linux 등 데스크탑·노트북 운영체제에서 주로 지원
  • ARM 아키텍처 키워드
  • 32bit → 64bit
  • Acorn RISC Machine
  • 에너지 효율성 ⇒ 배터리 수명 ⇒ 모바일 운영체제나 임베디드 시스템에서 주로 지원
  • 참고) ARM의 종류
  • ARMv7
  • 이전 세대의 arm 아키텍처
  • 32비트 명령어 세트 지원
  • 초기 iPhone 및 iPad
  • ARMv8
  • 최신 arm 아키텍처로
  • 64비트 명령어 세트 지원
  • 높은 성능과 향상된 보안 기능
  • 최근 iOS 기기에서 사용(arm64가 여기에 해당)
  • 애플의 A시리즈 칩은 이를 기반으로 하고 있음
  • ARMv9
  • 미래에 사용될 arm 아키텍처