#Armv8 (11) 썸네일형 리스트형 [가상화-virtualization] EL2:익셉션 핸들러 코드 소개 먼저 이번 절에서 분석할 XEN 하이퍼바이저에서 구현된 익셉션 핸들러의 전체 코드를 소개합니다. 01 0x26a800 : 02 0x26a800: b 0x269800 03 0x26a804: nop 04 0x26a808: nop ... 05 0x26a880: b 0x26986c 06 0x26a884: nop 07 0x26a888: nop ... 08 0x26a900: b 0x2698d8 09 0x26a904: nop 10 0x26a908: nop ... 11 0x26a980: b 0x269944 12 0x26a984: nop 13 0x26a988: nop ... 14 0x26aa00: .. [가상화-virtualization] 가상화 관점의 익셉션 벡터 테이블 분석 이전 절에서 익셉션 벡터 테이블의 스펙을 간단히 리뷰했습니다. 이어서 EL2 관점에서 익셉션 벡터 테이블을 자세히 분석하겠습니다. EL2 관점에서 분석한 익셉션 벡터 테이블 다음은 하이퍼바이저가 실행되는 EL2 기준에서 본 익셉션 벡터 테이블을 나타낸 표입니다. 먼저 'EL2 with SP_EL0' 행의 내용을 분석합시다. 'EL2 with SP_EL0'는 익셉션 레벨에 상관없이 스택을 설정하는 조건에서 실행되는 익셉션 종류별 오프셋을 나타냅니다. 그런데 대부분의 하이퍼바이저는 이와 같은 익셉션은 지원하지 않습니다. EL2에서 발생한 익셉션 분석 이어서 'EL2에서 발생'로 표시된 부분을 봅시다. 0x200, 0x280, 0x300, 0x380은 하이퍼바이저가 구동되는 EL2에서 .. [가상화-virtualization] 하이퍼바이저는 왜 알아야 할까? 하이퍼바이저가 무엇인지 알고 나면 "하이퍼바이저를 왜 알아야 할까?"라는 의문이 생길 것입니다. 사실 하이퍼바이저는 x86 기반 CPU에서 VMware나 IBM과 같은 기업에서 20 ~ 30년전 부터 꾸준히 개발해 왔습니다. x86 CPU 기반의 데스크톱이나 서버에서 개발됐던 기술인데, Armv8 아키텍처에서 하이퍼바이저를 왜 알아야 하는지 궁금할 것입니다. 클라우드 서버에서의 하이퍼바이저 활용 이미 유닉스 기반으로 서버를 개발했던 주요 기업(예: 썬마이크로시스템즈, HP, IBM)에서는 2000년 이전부터 하이퍼바이저 기반으로 구동되는 서버를 개발했습니다. 2022년 이후 소프트웨어 업계를 이끌 기술은 AI와 빅데이터와 클라우드인데, 이 세 가지 기술들이 다양한 제품군의 생태계에 영향을 끼치고 있습니다.. [가상화-virtualization] 하이퍼바이저를 구성하는 요소 앞에서 2개 이상의 운영체제를 동시다발적으로 실행할 수 있는 플랫폼이나 아키텍처를 하이퍼바이저라고 소개했습니다. 이어서 다음 그림을 보면서 하이퍼바이저 아키텍처를 구성하는 주요 기능에 대해 알아봅시다. 그림 15.3 하이퍼바이저 아키텍처의 전체 구조 위 그림의 가운데 윗부분에 표시된 게스트 OS 1, 게스트 OS 2는 하이퍼바이저에서 실행되는 운영체제입니다. 게스트 OS 1이 안드로이드, 게스트 OS 2는 리눅스가 될 수 있습니다. 그런데 게스트 OS 1와 게스트 OS 2에서 실행되는 운영체제는 각각 독립적인 EL0와 EL1에서 실행됩니다. 게스트 OS 1의 커널은 EL1, 게스트 OS 1의 애플리케이션은 EL0에서 실행됩니다. 마찬가지로 게스트 OS 2의 커널은 EL1, 게스트.. [Arm프로세서] 캐시: 캐시 관련 용어 알아보기(Arm 아키텍처 관점) Arm 아키텍처는 캐시를 제어하는 명령어를 제공하는데, 명령어의 동작 원리를 제대로 파악하려면 Arm 아키텍처에서 정의된 캐시의 동작과 관련된 용어를 알아야 합니다. 먼저 캐시와 관련된 용어를 소개하고 캐시를 제어하는 명령어를 소개합니다. 실전 개발에서 캐시의 동작을 설명할 때 '캐시 플러시(Cache Flush)'란 용어를 많이 씁니다. 일반적으로 캐시의 데이터를 메인 메모리에 내린다는 의미로 사용됩니다. 리눅스 커널이나 RTOS에서 Arm 프로세서의 캐시를 제어하는 함수나 레이블의 이름에 flush가 포함된 경우가 많습니다. 일반적으로 캐시 플러시는 캐시 라인에 있는 데이터를 메인 메모리에 복사해 캐시와 메인 메모리에 있는 데이터의 싱크를 맞추는 동작을 뜻합니다. 그런데 Arm 아키텍처 문서를 보면 .. [Arm프로세서] 메모리 아키텍처에서 캐시(Cache)란 컴퓨터가 발명된 후 초장기 시점에 컴퓨터는 어떤 모습일까요? 컴퓨터의 크기는 방 하나 정도였습니다. 그 당시에 CPU와 메인 메모리만 존재했습니다. CPU가 어떤 명령어를 실행하거나 데이터를 가져오려면 메인 메모리에 접근했습니다. 컴퓨터 기술이 발전하면서 컴퓨터의 성능을 키우려는 시도를 합니다. 처음에 CPU의 처리 속도(클럭)를 키우려는 방향으로 다양한 연구를 진행했는데 CPU의 성능을 최대로 키우면 이에 비례해 시스템의 성능도 함께 좋아질 것이라 예상했습니다. 그래서 CPU의 성능을 측정했는데 다음과 같은 흥미로운 사실을 알게 됐습니다. "CPU의 대부분 시간은 메인 메모리에 접근하는데 허비한다." CPU의 실행 속도는 매우 빠른데 메모리에 접근하는 시간은 CPU의 실행 시간에 비해 상당히 느리다는 .. [ARM프로세서] CPU 캐시(Cache)란 이번 포스트에서는 캐시의 기본 개념에 대해 소개하고 ARM 프로세서에 적용된 캐시의 개념에 대해 설명하겠습니다. CPU 캐시(Cache)란 캐시란 컴퓨터 용어로 캐시는 데이터나 값을 미리 복사해 놓는 임시 장소를 의미합니다. 캐시는 자주 사용되는 데이터를 임시 저장해 데이터에 접근하는 속도를 최적화하기 위해 사용됩니다. 다양한 소프트웨어 분야에서 캐시가 사용되는데 CPU를 설계할 때도 캐시를 사용해 CPU의 실행 속도를 최적화합니다. 그렇다면 CPU에서 캐시는 어떤 방식으로 사용이 될까요? 캐시는 어떤 형태일까요? 의문이 계속 생깁니다. 먼저 CPU에서 사용되는 캐시에 대해 알아봅시다. 사실 처음 CPU를 연구했던 과학자들은 처음부터 캐시를 CPU에 적용한 것은 아니었습니다. 오랫동안 CPU를 설계하는 .. [ARM프로세서] 익셉션(Exception) 소개 ARM 프로세서는 익셉션을 지원하며 운영체제의 ARM 프로세서가 지원하는 익셉션을 활용해 세부 기능을 구현합니다. 익셉션의 타입에 대해 알아보고 익셉션의 세부 동작에 대해 살펴보겠습니다. ARMv7과 ARMv8 아키텍처 별로 익셉션 벡터 테이블의 종류가 상이하지만, 익셉션이 동작하는 방식은 유사하므로 ARMv7 아키텍처 기준으로 익셉션에 대해 소개합니다. 익셉션의 종류 익셉션의 세부 동작에 대해 설명드리기 전에 먼저 익셉션의 타입에 대해 알아봅시다. 다음은 ARM의 익셉션의 종류입니다. 표 1.3 익셉션의 타입과 종류 먼저 메모리 어보트 타입으로 분류되는 익셉션에 대해 살펴봅시다. 다음은 메모리 어보트 타입으로 분류되는 익셉션입니다. ❑ Undefined Instruction: ARM 코어가 어셈.. 이전 1 2 다음