ARM

포스트: 171|아이템:ARM(173)
Tags

Posts

171 posts

[Arm프로세서] Arm 아키텍처의 레지스터 소개

Guillermo Austin Kim|2022년 4월 10일

Arm 아키텍처를 구성하는 기능을 이해하려면 먼저 무엇을 알아야 할까요? Arm 코어에 내장된 레지스터입니다. 레지스터를 잘 알려면 무엇을 알아야 할까요? 레지스터들이 어떻게 구성돼 있고 어떤 방식으로 사용되는지 파악하면 레지스터를 잘 안다고 말할 수 있습니다. Arm 아키텍처에서 정의된 기능들은 "레지스터를 어떻게 변경하고 설정할까?"가 그 실체이고 정체입니다. 메모리 아키텍처 관점으로 레지스터는 무엇일까요? Arm 코어가 사용하는 저장 매체 중에 가장 속도가 빠른 게 레지스터입니다. 레지스터 다음으로 속도가 빠른 저장 매체로 캐시와 RAM을 주로 언급합니다. 캐시나 RAM을 사용하는 것보다 되도록 레지스터를 사용해 데이터를 연산하면 성능을 최적화할 수 있습니다. 그럼 레지스터는 어떻게 표기할까요

[Arm프로세서] 레지스터를 배우기 어려운 이유

Guillermo Austin Kim|2022년 2월 27일

CPU 아키텍처를 배울 때 가장 먼저 레지스터를 접합니다. CPU를 설정하거나 CPU의 속성 정보를 레지스터가 담고 있기 때문입니다. Arm 아키텍처에서 정의된 레지스터를 설명하기 전에 레지스터를 소개합니다. 레지스터를 배우기 어려운 이유 CPU 아키텍처를 처음 배울 때 가장 먼저 무엇을 배울까요? 레지스터를 공부할 가능성이 높습니다. 그런데 Arm 아키텍처나 Arm 프로그래밍을 다루는 대부분의 책은 레지스터의 기능을 상세히 다룹니다. 예를 듭시다.  Armv7 아키텍처에서 정의된 레지스터는 범용 레지스터와 CP15 레지스터로 구성된다.  R13은 스택 포인터 레지스터, R14는 링크 레지스터이다. 이런 내용을 읽고 대부분 레지스터가 너무 어렵다고 느낍니다. 저도 처음 Arm 어셈블리를 배울 때

[Arm프로세서] XEN 하이퍼바이저: EL2 익셉션 벡터 핸들러 코드 분석

Guillermo Austin Kim|2022년 2월 17일

XEN 하이퍼바이저의 익셉션 벡터 핸들러를 해석하는 방법을 소개했으니 이어서 익셉션 벡터 핸들러의 코드를 분석하겠습니다. 먼저 2~14번째 줄을 보겠습니다. 2 26a800: 17fffc00 b 269800 3 26a804: d503201f nop4 26a808: d503201f nop...5 26a880: 17fffbfb b 26986c 6 26a884: d503201f nop7 26a888: d503201f nop...8 26a900: 17fffbf6 b 2698d8 9 26a904: d503201f nop10 26a908: d50

[Arm프로세서] XEN 하이퍼바이저 소개

Guillermo Austin Kim|2022년 2월 14일

그런데 오픈 소스 기반으로 개발되고 있는 하이퍼바이저가 있는데 그 중에서 가장 많이 사용되는 하이퍼바이저는 XEN입니다. XEN은 오픈 소스 프로젝트라서 누구나 XEN 하이퍼바이저의 코드를 내려받아 빌드해 실행할 수 있습니다. XEN에 대한 소개는 다음 홈페이지에서 확인할 수 있습니다.  이번 절에서는 Armv8 아키텍처에서 실행되는 XEN 하이퍼바이저의 익셉션 벡터 핸들러 코드를 분석합니다. 코드 분석을 통해 하이퍼바이저를 지원하기 위해 사용되는 레지스터와 명령어를 분석하고, 게스트 Exit 관점 중심으로 하이퍼바이저의 동작을 설명합니다. [정보]XEN 하이퍼바이저는 오픈 소스 프로젝트라 누구나 소스를 빌드해 실행하고 XEN 프로젝트에 컨트리뷰션(기여)를 할 수 있습니다. 그런데 대부분 상용 소프