2012-01-12 2 views
8

저는 처음에는 80 년대에 ARM 명령어 세트를 발견 했으므로 사용하지 않았습니다. 호기심에서 태블릿과 다른 ARM 장치를보고 있었는데 CPU가 다른 제조업체에서 생산된다는 점에 유의하십시오.다른 ARM 제조업체가 서로 다른 명령어 세트를 제공합니까?

나는 빠른 검색을 수행했지만, 다른 ARM 칩이 다른 명령어 세트를 가지고 있는지 여부에 대한 명확한 진술을 찾을 수 없었다.

나는 메인에서 그들은 동일하다고 가정 할 것이다.

+1

ARM 코어에 라이센스를 부여한 칩 공급 업체를 말하는 것이 더 정확할 수 있습니다. 대부분의 칩 회사는 칩을 만들기 위해 누군가 칩을 만들지 않으며 ARM 프로세서를 만들지도 않으므로 ARM에서 코드를 구입하여 칩 디자인에 추가합니다. –

답변

6

goto http://infocenter.arm.com 왼쪽에는 ARM 아키텍처가 나와 있습니다. 그리고 그 참조 매뉴얼 아래에. 이전에는 하나의 ARM ARM (ARM 아키텍처 참조 설명서)이 있었지만 가족은 가족, 가족들에게 침입해야하는 시점까지 성장했습니다.

ARM ARM이 사용자에게 명령어 세트를 보여줍니다. ARMv5 매뉴얼이라고 부르는 것은 오래된 ARM ARM입니다. ARM 명령어 (32 비트)와 엄지 손가락 지침 (16 비트)을 찾을 수 있습니다. 각 명령어에 대해 지원되는 아키텍처가 나열되므로 ARMv4 (ARMv4 a.k.a ARM7, 널리 사용되는 ARM7TDMI 코어와 유사 함)에서 지원하지 않는 ARMv5 명령어가 표시 될 수 있습니다. Thumb 명령어는 ARMv4T 이상에서 지원됩니다.

따라서 수시로 추가되는 새로운 명령어 및 고정 된 버그/제한 사항에 익숙했던 코어 32 비트 아암 명령어 세트 (ldr r0, r0] 등).

부동 소수점 단위는 하나 또는 두 개의 오버홀을 가지고 있으며, 대부분의 코어에는 fpu가없고 칩 공급 업체가 칩에 포함시킨 fpu를 가진 코어가 없습니다. ffa는 나이가 들었고, vfp는 더 새롭고 지금은 네온 물건입니다. 주의를 기울이면 일반 보조 프로세서 지침 카테고리로 분류됩니다. 하지만 당신은 알 필요가 없으며 모든 것을위한 별칭을 가진 코 프로세서 버전을 사용해야합니다.

java/jazelle 항목이 있습니다. 일부 코어에서 옵션이 포함되어있을 수도 있습니다. 공급 업체가 포함되어 있다는 것을 의미하지는 않습니다.

thumb 명령 세트에 대한 thumb2 확장 세트가 두 세트 이상 있어야합니다. 엄지 2 확장 이전에 엄지 명령은 모두 16 비트였으며 ARM 명령어에 일대일 매핑을 사용했기 때문에 ARM 코어 만 필요하다는 것을 알게되었습니다. 디코더는 더 작은 명령어에서 ARM 명령어로 변환하여 코어에 공급합니다. 모든 명령어는 분기를 제외하고 16 비트입니다.이 패턴을 보면 두 개의 별도 16 비트 명령어로 쉽게 디코딩 할 수 있습니다. 그냥 엄지 지침 http://github.com/dwelch67/thumbulator로 놀고 싶다면 시뮬레이터 btw가 있습니다. 그렇다면 ARM7TDMI를 사용하는 모든 사람들이 소형 마이크로 컨트롤러를 사용하기로 결정하고 칩 크기와 전력을 소비하는 엄지 2 지원 프로세서는 엄지 손가락이며 32 비트 ARM 명령어는 지원하지 않습니다. 새로운 코어 등으로 번역됩니다. ARMv6-M 일명 Cortex-m0 및 Cortex-m1은 엄지 손가락 명령 세트를 사용하여 몇 가지 32 비트 명령어를 추가하여 ARM과의 성능 차이를 줄였습니다 (엄지 손가락은 작았지만 동일한 코드를 컴파일하면 ARM보다 약간 느리다). 둘 다 실험을 통해 엄지 손가락을 사용하는 데 10-20 % 더 많은 지시가 필요했습니다. 이론적으로 thumb-2 (ARMv7-M)는 ARM을 비교할 수있는시기와 장소에서 ARM보다 성능이 우수합니다. 어떤 이유로 든 Cortex-m3이 처음 나왔는데 ARMv7-M이며 엄지 명령 세트에 32 비트 thumb2 명령이 추가되었습니다. 내가 최근에 계산 한 ARMv6-M은 20처럼 추가되었으며, ARMv7-M은 140-150 개의 명령어가 기본 엄지 명령어 세트에 추가 된 것과 같습니다. thumb2는 기본적으로 가변 단어 길이입니다. 그리고 다시 피질 -m 시리즈에서만 작동합니다.그것을 보면 ARM 명령어 세트를 엄지 손가락으로 다시 빌드 한 것과 거의 같습니다. 완전하지는 않지만 명령어와 같은 많은 팔, 두 개가 아닌 세 개의 레지스터, 더 높은 레지스터에 도달 할 수 있고 즉시 처리기를 사용할 수 있습니다.이 때문에 ARM과 thumb/thumb2 용으로 컴파일 된 asm을 작성하고자합니다. 그래서 그들은 통일 된 구문을 내놓았습니다. 암에 대한 조립하는 것은 그들이 대신 구문 오류, 당신을위한

add r0,r0,r1 

로 변환 할 경우 엄지 손가락에 대한 조립, 즉, 명령 경우 당신은

add r0,r1 

같은 명령을 쓸 수 있습니다. 최소한 gnu binutils assembler (gas)를 사용하여 통합 구문을 사용하도록 지정해야합니다.

infocenter.arm.com의 Technical Reference Manuals도 마찬가지로 중요한 문서 세트입니다. 각 코어에는 trm이 있습니다. 실제로 각 코어의 각 rev에는 TRM이 있습니다. 또한 L2 캐시와 같은 추가 비용 항목에는 각 rev에 대해 고유 한 TRM이 있습니다. 프로그래밍상의 차이점과 정오표 차이가 있기 때문에 칩 벤더가 구입/사용하는 코어와 개정판 (rev 2.0 r2p0, rev 1.0 r1p0 등)을 찾아내는 것이 중요합니다. , 그것은 엄청난 혼란입니다, 내가 볼 때마다 또 다른 회사가 완전히 오해하고 잘못/핵심 요소/오타를 잘못 적용했습니다. 현재 약간의 재앙입니다). 때로는 TRM에 지침 정보가 포함되어 있거나 코어가 지원하고 지원하지 않는 내용에 대한 명확한 그림이 그려지는 경우가 있습니다. ARM ARM은 포괄적 인 제품으로, TRM이 하나의 코어에만 한정된 온 가족 또는 다수의 코어 제품군을 포괄합니다. ARM ARM과 TRM을 혼동하는 예로는 ARM ARM을 살펴보면 BE-32 또는 BE-8 빅 엔디안 모드를 사용할 수 있다는 인상을받을 수 있습니다. 실제로는 하나 또는 다른 ARMv6 및 최신 BE-8, 기간, 익숙해집니다. ARMv5 및 ARMv4는 BE-32 또는 그저 빅 엔디 언이라고 불리는 ARMv6보다 먼저 사용됩니다. 나는 당신이 당신이 그것에서 얻을지도 모른다고 생각하는 것에도 불구하고 팔에 빅 엔디안을 사용하지 말 것을 강력히 권한다. 기본 모드로 가면 많은 일과 실패를 줄일 수 있습니다. 필자는 개인적 경험을 통해 ARM ARM에서 설명한 비트가 내가 사용했던 코어에서 작동하지 않는 이유를 알아 내려고합니다.

64 비트 코어는 개발 단계의 어딘가에 있으며, 완료되면 그냥 트리거를 당겨 사용하는 사람을 찾고 있습니다. 사실 ARMv8 문서를 다운로드하여 사용할 수 있습니다.

ARM 아키텍처의 infocenter.arm.com에 짧은 대답을 주시면 다른 명령어 세트와 해당 명령어 세트에 대한 개선 사항/추가 사항을 설명하는 모든 문서를 찾을 수 있습니다.

+0

"모든 엄지 손가락 변종"엄지 지시는 적어도 ARMv7을 통해 ARMv4T에서 작동하므로 가장 휴대하기 쉽습니다. 아직 ARMv8 64 비트를 보지 않았습니다. –

2

일반적으로 UAL, Thumb 및 Thumb2가 가장 일반적인 지침 세트가 몇 가지 있습니다. 특수 하드웨어 (예 : DSP)를 포함하는 일부 ARM 코어는 언어를 확장합니다.

2

Nop. 제조사간에 차이가 없다. 모두 ARM 사양을 준수합니다.

일부 확장은 선택 사항입니다. NEON의 경우입니다.

그러나 내가 아는 한 Tegra 2에만이 확장 프로그램이 포함되어 있지 않습니다. 이 때문에 tegra 2는 비디오 디코딩을위한 매우 나쁜 프로세서입니다 (예를 들어).

관련 문제