본문 바로가기

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리

(155)
[ARM프로세서] ARM 프로세서의 패밀리 ARM 사는 용도에 따라 제품군을 나눴는데, 현재 ARM의 최신 라인업인 Cortex 시리즈로 세분화돼 있습니다. 먼저 Cortex-A 제품군부터 알아봅시다. Cortex-A 시리즈 컴퓨터 제품을 위한 제품군입니다. 모바일에서 서버용 컴퓨터까지 다양한 플랫폼에서 개발되는 제품을 위한 ARM의 주력 상품군입니다. 스마트폰, TV 등과 같이 어느 정도 성능을 만족해야 하는 멀티미디어 기기나 많은 양의 데이터나 리소스를 처리해야 하는 임베디드 기기에서 주로 사용됩니다. 대부분 범용 운영체제인 리눅스와 윈도우 운영체제를 지원합니다. Cortex-R 시리즈 RTOS 기반 제품을 위한 라인업인데, R은 말 그대로 Real-time의 약자입니다. RTOS에서 MPU(메모리보호유닛)이나 TCM(Tight-Coupled..
[ARM프로세서] ARM 프로세서의 역사 ARM은 회사 이름이기도 하고 x86와 같은 CPU 아키텍처의 이름입니다. 이번 절에서는 ARM의 역사에 대해 소개합니다. ARM사는 에이콘에서 유래됐는데요. 아래 순서로 ARM의 역사에 대해서 살펴보겠습니다. ● 에이콘의 설립 ● 조인트 벤처로 ARM사의 탄생 ● 2010년 모바일 시장 석권 에이콘의 설립 1978년 영국 캠브리지에서 크리스 커리와 헤르만 하우저가 에이콘 컴퓨터라는 회사를 세웁니다. 마이크로프로세서 기반의 시스템을 개발하는 것이 주된 미션인데 6502 프로세서를 탑재해 컴퓨터 시스템을 개발합니다. '에이콘'사는 컴퓨터 제품을 꾸준히 개발했는데, 1983년 'BBC 마이크로'란 프로젝트로 '에이콘'은 입지를 다지게 됩니다. 'BBC 마이크로'는 프로젝트 닉네임으로 컴퓨터 제품인데 영국의 ..
[ARM프로세서] ARM 프로세서를 공부하는 방법의 문제점 분야를 막론하고 새로운 IT 기술을 배울 때 공부하는 방법은 중요합니다. 가끔은 "무식하게, 시행착오를 많이 겪는 게 최고의 공부 방법이라"라고 말하는 분도 있지만, ARM 프로세서를 학습할 때는 적용할 만한 조언은 아닌 것 같습니다. 왜냐면 저의 수년간의 실전 프로젝트를 통해 다음과 같은 사실을 절감했기 때문입니다. ● ARM 프로세서는 정말로 공부하는 방법이 중요하다! ARM 프로세서를 공부하는 방법이 중요한 이유는 무엇일까요? 잘못된 방법으로 ARM 프로세서를 공부하면 배운 내용이 오랫동안 머릿 속에 남지 않기 때문입니다. 빨리 지루해집니다. 무엇보다 배운 내용을 실전 프로젝트에 활용하지 못합니다. 그래서 ARM 프로세서를 공부하다가 포기하거나 ARM 프로세서가 정말 어려운 주제라고 믿게 됩니다. ..
[ARM프로세서] ARM 프로세서를 일반 SW 개발자도 배워야 하는 이유 하드웨어를 제어하는 시스템 소프트웨어 개발자들은 ARM 프로세서를 잘 배워야 한다고 말씀 드렸습니다. 그렇다면 다른 분야의 소프트웨어 개발자들도 ARM 프로세서들을 잘 알아야 할까요? 솔직히 말해, 모든 소프트웨어 개발자가 ARM 프로세서를 잘 배울 필요는 없습니다. 예전과 달리 소프트웨어 분야가 다양해졌고, 한 프로젝트에 탑재되는 소프트웨어의 계층 구조도 복잡해졌기 때문입니다. 다음은 안드로이드의 시스템 아키텍처 구성도인데, 이 그림을 보면서 설명을 더 하겠습니다. 그림: 안드로이드 소프트웨어 계층 그림의 윗 부분부터 보면 "Application" - "Application Framework" - "Libraries" - "Linux Kernel" 이란 계층이 보입니다. "Application" 계층에..
[ARM프로세서] 소프트웨어 개발자가 ARM 프로세서를 배워야 하는 이유 2005년도에 제가 처음 개발을 시작한 프로젝트는 ARM7 프로세서 기반의 시스템이었습니다. 프로젝트에 투입된 소프트웨어 개발자들은 모두 ARM 프로세서 교육을 들었습니다. ARM 프로세서를 왜 배워야 하는지 의문을 품었던 개발자는 거의 없었던 것 같은데요. 2021년인 지금 가끔 ARM 프로세서 학습의 필요성에 대해 의문을 품는 분들이 종종 있는 것 같습니다. 이번 포스트에서 임베디드 개발자가 ARM 프로세서를 왜 배워야 하는지 살펴보겠습니다. 브링업을 제대로 하기 위해서 임베디드 개발자들이 진행하는 프로젝트의 단계는 '보드 브링업 - 기능 안정화 - 유지 보수'로 분류될 수 있습니다. 3단계 중 보드 브링업 단계에서 구체적으로 어떤 일을 할까요? 과제에 따라 다르지만 개발 업무의 내용을 요약하면 다음..
[ARM] 레지스터란(ARMv7, ARMv8) 여러분이 어셈블리 명령어를 작성하거나 C 프로그래밍을 하면 컴파일러는 ARM 코어가 실행할 수 있는 어셈블리 명령어로 변환합니다. 그런데 대부분 ARM 어셈블리 명령어는 레지스터와 함께 구성돼 있어, 레지스터에 친숙해질 필요가 있습니다. 그렇다면 레지스터란 무엇일까요? 레지스터는 ARM 코어가 어떤 연산을 수행할 때 데이터를 저장하는 임시 저장 공간입니다. 이를 쉽게 CPU 공간의 메모리라고도 설명하기도 합니다. 이제 ARM 사에서 배포한 문서에서 레지스터를 설명한 부분을 보면서 레지스터에 대해 조금 더 알아봅시다. ARMv7 아키텍처의 레지스터 --- 출처: DDI0406C_arm_architecture_reference_manual.pdf A2.3 ARM core registers In the app..
[ARMv8]ARM64 - 각 익셉션(Exception) 레벨 소개 이번 포스팅에서는 ARMv8 아키텍처를 파악하다가 만나는 가장 큰 걸림돌인 '익셉션 레벨'에 대해 설명합니다. 대부분 개발자들은 기존 ARM 아키텍처의 User, Supervisor, IRQ, FIQ, 모드에 익숙한 상태입니다. User 모드에서 소프웨어 인터럽트를 발생하면 Supervisor 모드로 진입한다"라는 내용에 익숙해 있죠. 그런데 ARMv8 아키텍처를 파악하면 가장 먼저 '익셉션 레벨'이란 용어를 만나게 됩니다. 문제는 ARMv8 아키텍처를 구성하는 주요 개념을 익셉션 레벨이란 용어를 사용해 설명을 합니다. 낯선 '익셉션 레벨(EL)'이란 용어를 사용해 ARMv8 아키텍처를 설명하니 스팩 문서를 읽다가 포기하는 경우가 많습니다. EL와 익셉션 레벨이란 익셉션 레벨은 ARM 사에서는 EL(Ex..
[인텔 x86] 아키텍처 문서 홈페이지 링크 인텔 x86 아키텍처 관련 문서나 자료는 아래 링크에서 확인할 수 있습니다. 문서 및 질의 서칭 페이지: https://www.intel.com/content/www/us/en/search.html#sort=relevancy 인텔 아키텍처 문서: https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html 홈페이지 디자인과 폰트가 이쁜 것 같네요.