#Arm (13) 썸네일형 리스트형 [가상화-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프로세서] 시스템 반도체 개발 과정 오버뷰(Overview) 이번 포스트에서는 반도체 개발 과정에 대해서 알아보겠습니다. 1. 스팩 확정, RTL 설계(베릴로그), 합성 검증 먼저 반도체 회사의 마케팅 부서에서 반도체의 스팩을 정합니다. 이후 RTL이란 툴을 사용해 C 코딩과 같이 로직을 코딩합니다. RTL로 반도체 로직을 설계하는 것이라 볼 수 있죠. 이어서 설계한 내용을 바탕으로 툴을 돌립니다. 이를 Synthesis 혹은 합성이라고 부르기도 합니다. 합성한 결과를 갖고 PC 환경에서 시뮬레이터를 돌려서 검증을 시도합니다. 이 과정을 거쳐서 반도체 기능을 수행하는 반도체 모듈이 만들어지게 되는 것이죠. 2. FPGA 검증/Back-End 개발 이렇게 충분히 시뮬레이션을 한 다음에, 그 결과를 FPGA에 넣어서 시스템 반도체에 대한 검증을 시도합니다. FPGA는.. [ARM프로세서] 트러스트존(Trustzone) 이란 ARM 아키텍처는 운영체제에서 다양한 구조로 시스템을 설계할 수 있게 부가 기능(Extensions)을 지원합니다. 그 중 대표적인 기능이 트러스트 존(Trustzone)입니다. 트러스트 존(Trustzone) 소개 트러스트 존은 ARM 아키텍처에서 지원하는 Security Extention(보완 확장) 기능으로, 여러 보안 애플리케이션이 ARM의 트러스트 존을 활용해 구현돼 있습니다. 다른 관점으로 보완을 위한 추가 기능이라고 볼 수 있습니다. ARM 아키텍처에서 보완을 위한 트러스트 존을 지원하는 이유는 무엇일까요? 바로 해킹으로부터 시스템을 보호하기 위해서인데요, 사실 예전부터 소프트웨어 분야에서 하드웨어 제조 분야까지 보안을 위협하는 해킹의 위험이 항상 존재했습니다. 컴퓨터의 기술이 발전함에 따라.. 이전 1 2 다음