라즈베리 파이 3 및 64 비트 커널, armv7과 armv8의 차이점


11

Raspberry Pi 3 용 64 비트 커널이 있습니까? 나는 공식 페이지를 확인한 소스를 둘러보고 다음 커널이 나열되어 있습니다.

  1. NOOBS-이것은 설치 프로그램이며 OS 자체가 아닙니다.
  2. Rapsbian-한 번의 다운로드로 모든 버전의 Pi와 32 비트 호환 가능하다고 가정합니다.
  3. 우분투 메이트-aarch32 (ARMv7)
  4. 우분투 우분투 코어-32 비트처럼 보인다
  5. OSMC- "Raspberry Pi 2/3"에 대한 동일한 다운로드, 따라서 32 비트
  6. LibreELEC-2 & 3 용 통합 빌드이므로 32 비트 만
  7. PiNet-이것이 무엇인지 모르지만 64 비트는 의심합니다.
  8. RISC OS-리눅스처럼 보이지 않습니다
  9. 기상 관측소-예, 아니요

공식 64 비트 커널이있는 것 같지 않습니까? 비공식적 인 것이 있습니까? 하나만 컴파일하고 작동 할 것으로 기대할 수 있습니까 (물론 아프지 않을 것입니다.) 적어도 그것에 대해 일하는 사람이 있습니까? 기본 64 비트 숫자에 액세스하고 싶습니다.

다른 말로, armv7과 armv8의 차이점은 무엇입니까? 젠투는 armv7을 위해 스테이지 3 타르볼을 제공합니다. armv8 인 Pi 3에서도 작동합니까?


"Gentoo는 armv7에 스테이지 3 타르볼을 제공합니다. armv8 인 Pi 3에서도 작동합니까?" 다시 말하지만, 많은 해킹이없는 것은 아니지만 pi 커널이 재고가 없기 때문에 ARMv7이 ARMv8에서 작동하지 않기 때문에 (현재 Pi 2와 3은 동일한 커널을 사용합니다).
goldilocks

1
젠투 가이드는 github에서 Pi 커널 소스 코드를 컴파일하는 과정으로 진행되므로이를 설명한다고 가정합니다. ARMv8 보드에서 ARMv7 버전을 사용할 수 있다면 관심이있었습니다. 예
회색 늑대

답변:


7

내가 찾은 작은 것에서 안정적이고 공식적인 것은 없습니다. 일부는 컴파일 할 것이 있지만 드라이버 / 모듈에 문제가 있습니다.

이 링크는이 주제와 관련하여 관심을 가질 수 있습니다.

aarch64 실행 상태로 들어가기

RPi3 용 Raspbian Jessie (64 비트)?


+1. 실제로 64 비트 OS를 실험하고 싶습니다. Pi를위한 초경량 OS를 패치하고 컴파일하려고 시도 할 수 있습니다 (가벼운 작업)
PNDA

@ PandaLion98 저는 이것에 매우 관심이 있습니다
Dan V

11

일반적인 합의는 64 비트 커널의 유일한 장점은 다음과 같기 때문에 64 비트 커널이 Pi의 성능을 향상시키지 않는다는 것입니다.

  1. 32 비트 커널에서 수동으로 지정할 수있는 더 큰 int 값
  2. RAM이 내장되어 있고 확장 할 수 없기 때문에 Pi에서 쓸모없는 4Gb 이상의 RAM을 가질 가능성.

또한 ARM 칩의 64 비트 대 32 비트는 x86 칩에서 비약적인 성능 향상이 아닙니다. x86 칩은 64 비트로 전환 할 때 아키텍처가 크게 업그레이드되었지만 ARM 칩은 이미 32 비트 버전에서 상당히 견고했기 때문입니다.

그래도 자유롭게 실험하십시오! :)


2
OP는 성능이 아니라 가용성에 대해 질문했습니다. 개인적으로 Pi에 64 비트 배포판을 사용하는 것은 최신 MongoDB가 32 비트 지원을 중단했기 때문입니다.
Andrejs Cainikovs

또한 aarch64 빌드는 '폐쇄 소스 공급 업체 라이브러리' 에 덜 의존하는 경향이 있으며 v7 기능을 유지하는 대신 v8 잠재력을 잠금 해제합니다.
earthmeLon

64 비트 시스템은 없습니다 2038 년 문제
ceving

7

모두가 잊어 버린 것으로 보이는 64 비트의 장점 중 하나는 ARMv8보다 ARMv7보다 훨씬 더 많은 레지스터가 있다는 점입니다. 부동 소수점 성능도 훨씬 뛰어납니다.

ARMv7의 애드온이 아니라 완전히 새로운 아키텍처입니다.



4

1.3 GHz ARM Cortex-A53을 사용하여 태블릿에서 Android 벤치 마크를 실행할 때 64 비트 컴파일과 32 비트의 성능이 크게 향상되었습니다. 최신 버전은 Eclipse를 통해 컴파일되며 런타임에 CPU가 ARM, Intel 또는 MIPS인지, 32 비트 또는 64 비트 아키텍처인지 감지합니다.

인텔 CPU에 대한 이전 Windows 컴파일에서 SSE 유형 SIMD 명령어를 사용하여 64 비트 작업이 32 비트보다 훨씬 빠를 수 있습니다. 그러나 이전 버전과 호환되지 않는 최신 32 비트 컴파일러는 사실상 동일한 코드와 유사한 속도를 생성합니다.

안드로이드 벤치 마크의 세부 사항은 다음과 같으며 A53과 1.2GHz Cortex-A9를 통한 32 비트 및 64 비트 결과를 보여줍니다. 마지막에는 사용중인 다른 명령어를 식별하는 일부 어셈블리 코드 목록이 있습니다. 아래는 결과 요약입니다.

http://www.roylongbottom.org.uk/android%2064%20bit%20benchmarks.htm#anchorStart

Whetstone Benchmark-(소규모의 루프) 유사한 성능을 발휘하며 EXP 함수를 사용한 테스트 컴파일에 의해 전체 등급이 영향을받습니다.

Dhrystone 벤치 마크-최신 MIPS / MHz 1.09 32 비트, 1.96 64 비트, 1.10 A9-64 비트 이상 최적화되었습니다.

Linpack 벤치 마크-(N = 100) 64 비트 DP 1.97 x 빠름, SP 2.67 x-어셈블리 코드 참조

리버모어 루프-(커널 24 개) 평균 1.5 배, 0.8 ~ 7.9 배

L1 / L2 캐시 및 RAM 테스트

MemSpeed-부동 및 정수 계산-캐시 2.2 x, RAM 1.5 x를 얻습니다.

BusSpeed-정수 데이터 스트리밍 및 버스트 읽기 – 스트리밍 2.0 x L1, 1.5 x L2, 1.25 x RAM-2.6 x L1, 유사한 L2 및 RAM.

RandMem-동일한 복잡한 인덱싱 구조의 직렬 및 랜덤 읽기 및 읽기 / 쓰기-일반적으로 읽기 속도는 약간 빠르지 만 비슷하거나 느린 읽기 / 쓰기입니다.

그런 다음 위의 MP 버전이 있으며 4 코어 최대 2.7 GFLOPS 32 비트 및 5.5 GFLOPS 64 비트로 최대 SP MFLOPS (MP-MFLOPS)를 측정하려고합니다. 64 비트 컴파일러가 32 비트에서 5.7 대 5.7에서 최대 10.8 GFLOPS로 대체 명령어를 생성하는 NEON 내장 함수를 사용하는 버전도 있습니다 (어셈블리 목록 참조). 또한 Windows 10 및 Android Intel Atom 기반 태블릿에 대한 이러한 벤치 마크 버전 (64 비트 및 32 비트 Windows, 32 비트 Android-완전 64 비트가 완전히 구현되지 않음-64 비트 Linux 커널이지만 32 비트 Android)이 있습니다.

http://www.roylongbottom.org.uk/android%20benchmarks.htm

또한 32 비트 및 64 비트 Linux / Intel 버전이 있습니다.

로이 롱 보텀


3

다음은 RPI3 Aarch64 커널을 컴파일하는 방법입니다.

먼저 Linaro aarch64가 필요합니다 : https://releases.linaro.org/components/toolchain/binaries/latest/aarch64-linux-gnu/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu.tar .xz

압축을 풀고 어딘가에 넣으십시오 (예 : /opt/toolchains/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu

다음은 펌웨어, VC, 커널 소스를 다운로드하고 모듈로 커널을 컴파일하는 스크립트입니다. Jenkins 서버 에이 스크립트를 사용하므로 필요한 것을 선택하십시오.

git clone https://github.com/raspberrypi/linux.git -b rpi-4.8.y --depth=1
cd linux
export CROSS_COMPILE=/opt/toolchains/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
export ARCH=arm64
export INSTALL_MOD_PATH=MODULES/
export KERNEL=kernel8

rm -rf BOOT
rm -rf MODULES
rm -rf rpi-proprietary/

mkdir -p BOOT/overlays
mkdir MODULES

git clone https://github.com/Hexxeh/rpi-firmware.git --depth=1 rpi-proprietary/

cp ./rpi-proprietary/COPYING.linux ./BOOT/
cp ./rpi-proprietary/LICENCE.broadcom ./BOOT/
cp ./rpi-proprietary/bootcode.bin ./BOOT/
cp ./rpi-proprietary/fixup.dat ./BOOT/
cp ./rpi-proprietary/fixup_cd.dat ./BOOT/
cp ./rpi-proprietary/fixup_db.dat ./BOOT/
cp ./rpi-proprietary/fixup_x.dat ./BOOT/
cp ./rpi-proprietary/start.elf ./BOOT/
cp ./rpi-proprietary/start_cd.elf ./BOOT/
cp ./rpi-proprietary/start_db.elf ./BOOT/
cp ./rpi-proprietary/start_x.elf ./BOOT/

cd ./rpi-proprietary/vc/hardfp/opt/

tar -cvzf VC.tar.gz vc/

cd ../../../../
mv ./rpi-proprietary/vc/hardfp/opt/VC.tar.gz ./
rm -rf rpi-proprietary/

make bcmrpi3_defconfig
make modules
make module_install
make -j10

rm -rf MODULES/lib/modules/*v8*/build MODULES/lib/modules/*v8*/source

cp ./arch/arm64/boot/Image ./BOOT/kernel8.img
cp ./arch/arm64/boot/dts/broadcom/*.dtb ./BOOT/
cp ./arch/arm64/boot/dts/overlays/*.dtbo ./BOOT/overlays/
cp ./arch/arm64/boot/dts/overlays/README ./BOOT/overlays/

tar -cvzf MODULES.tar.gz MODULES/
tar -cvzf BOOT.tar.gz BOOT/

make mrproper

이제 BOOT.tar.gz를 풀어서 SD 카드에 넣으십시오.

중요 : AARCH64 커널을 부팅하려면 arm_control = 0x200 을 config.txt에 넣어야합니다.

또는 내 Jenkins에 미리 빌드 된 https://jenkins.sandpox.org/job/RPI3_KERNEL_AARCH64/를 사용할 수 있습니다.


3

현재로서는 FedoraArchlinux 가 잘 지원되는 것 같습니다 .

아치 방식으로 가면 이미지를 작성하는 데 도움 되며 (linux / rpi3에서 나에게는 make linux) Wi-Fi를 시작하는 데 도움 됩니다.

보유하고있는 라즈베리를 확인해야하는 경우이 안내서를 사용 하십시오 .

또한 arm_control=0x200더 이상 사용되지 않으며 arm_64bit에서 대신 사용해야합니다 /boot/config.txt.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.