रास्पबेरी पाई 3 और 64-बिट कर्नेल, armv7 और armv8 के बीच अंतर


11

क्या रास्पबेरी पाई 3 के लिए कोई 64-बिट कर्नेल है? मैंने चारों ओर देखा और स्रोतों से मैं आधिकारिक पृष्ठ देखता हूं और निम्नलिखित गुठली को सूचीबद्ध किया गया है:

  1. NOOBS - यह इंस्टॉलर है, नहीं ओएस अपने आप से, है ना?
  2. रैप्सबियन - बस एक डाउनलोड, इसलिए मैं पाई के सभी संस्करण के साथ 32 बिट संगत मानता हूं
  3. उबंटू मेट - अराजकता 32 (ARMv7)
  4. उबंटू उबंटू कोर - केवल 32 बिट की तरह लगता है
  5. OSMC - "रास्पबेरी पाई 2/3" के लिए समान डाउनलोड, इसलिए 32 बिट
  6. लिबरेलेक - 2 और 3 के लिए संयुक्त निर्माण, इसलिए केवल 32 बिट
  7. पाइनेट - डननो यह क्या है, लेकिन संदेह 64 बिट
  8. RISC OS - लिनक्स की तरह प्रतीत नहीं होता है
  9. मौसम स्टेशन - हाँ, बस नहीं

तो ऐसा नहीं लगता कि आधिकारिक 64 बिट कर्नेल उपलब्ध है? क्या कोई अनौपचारिक है? क्या मैं सिर्फ एक संकलन कर सकता हूं और इसे काम करने की उम्मीद कर सकता हूं (मुझे लगता है कि नहीं लेकिन पूछने के लिए चोट नहीं लगती है ..)? क्या कोई इस पर कम से कम काम करता है? मुझे मूल 64-बिट नंबरों तक पहुंच पसंद है।

अन्य नोट पर, armv7 और armv8 के बीच कितना बड़ा अंतर है? Gentoo armv7 के लिए स्टेज 3 टारबॉल प्रदान करता है। क्या वह काम Pi 3 पर होगा जो armv8 है?


"Gentoo armv7 के लिए स्टेज 3 टारबॉल प्रदान करता है। क्या वह Pi 3 पर काम करेगा जो armv8 है?" फिर से, नहीं, बहुत हैकिंग के बिना नहीं, लेकिन क्योंकि पी कर्नेल स्टॉक नहीं है, इसलिए नहीं कि ARMv7 ARMv8 पर काम नहीं करता है (वर्तमान में Pi 2 और 3 एक ही कर्नेल का उपयोग करते हैं)।
गोल्डीलॉक्स

1
Gentoo गाइड github से पाई कर्नेल स्रोत कोड को संकलित करने के साथ आगे बढ़ता है, इसलिए मैं मानूंगा कि वे इसके लिए जिम्मेदार हैं। मुझे बस दिलचस्पी थी कि मैं ARMv8 बोर्ड पर ARMv7 संस्करण का उपयोग कर सकता हूं, ऐसा लगता है कि हाँ
ग्रेवुल्फ

जवाबों:


7

मैंने जो कुछ भी पाया है उसमें से कुछ भी स्थिर और आधिकारिक नहीं है। कुछ ने संकलन करने के लिए एक प्राप्त किया है, लेकिन फिर ड्राइवरों / मॉड्यूल के साथ समस्या है।

ये लिंक इस विषय के बारे में आपको रुचि दे सकते हैं।

अराजकता 64 निष्पादन स्थिति में प्रवेश करना

आरपी 3 के लिए रास्पियन जेसी (64 बिट)?


+1। वास्तव में 64-बिट OS के साथ प्रयोग करना पसंद करेंगे। मैं पाई के लिए एक बहुत हल्के ओएस को पैच अप करने और संकलित करने की कोशिश कर सकता हूं (हल्के चीजों को आसान बनाने के लिए)
पीएनडीए

@ PandaLion98 मुझे इसमें बहुत दिलचस्पी होगी
Dan V

11

आम सहमति यह है कि 64 बिट कर्नेल, पीआई पर प्रदर्शन को नहीं बढ़ाएगा, क्योंकि 64 बिट कर्नेल के केवल 2 वास्तविक लाभ हैं:

  1. बड़े अंतर मान, जिन्हें आप 32 बिट कर्नेल में किसी भी तरह से मैन्युअल रूप से निर्दिष्ट कर सकते हैं
  2. रैम के 4 जीबी से अधिक होने की संभावना, जो कि रैम पर बेकार है क्योंकि रैम अंतर्निहित और गैर-विस्तार योग्य है।

इसके अलावा, एआरएम चिप्स पर 64 बिट बनाम 32 बिट, बड़े प्रदर्शन की छलांग नहीं है कि यह x86 चिप्स पर था, क्योंकि 64 बिट में जाने पर x86 चिप्स का महत्वपूर्ण वास्तुकला उन्नयन था, जबकि 32 बिट संस्करणों में एआरएम चिप्स पहले से ही बहुत ठोस थे।

हालांकि प्रयोग करने के लिए स्वतंत्र महसूस करो! :)


2
ओपी ने प्रदर्शन के बारे में नहीं पूछा, लेकिन उपलब्धता के बारे में। व्यक्तिगत रूप से, मैं पाई के लिए 64 बिट डिस्ट्रो होने के बारे में सोच रहा हूं क्योंकि नवीनतम MongoDB ने 32 बिट समर्थन को गिरा दिया है।
बेपनीस कैनिकोव्स

इसके अलावा, अराजकता 64 बिल्ड 'बंद स्रोत विक्रेता पुस्तकालयों' पर कम निर्भर करती है , और आपको v7 क्षमताओं में बंद रखने के बजाय v8 क्षमता को अनलॉक करती है।
EarthmeLon

64bit सिस्टम में एक वर्ष 2038 समस्या नहीं है
7

7

64 बिट का एक लाभ यह है कि हर कोई भूल जाता है ARMv8 ARMv7 की तुलना में काफी अधिक रजिस्टर है यह बहुत बेहतर फ्लोटिंग पॉइंट प्रदर्शन भी है।

यह ARMv7 के लिए केवल एक ऐड-ऑन नहीं है, यह एक पूरी नई वास्तुकला है।



4

मैंने 1.3 गीगाहर्ट्ज़ एआरएम कॉर्टेक्स-ए 53 का उपयोग करके टैबलेट पर अपने एंड्रॉइड बेंचमार्क चलाने पर 64 बिट संकलनों बनाम 32 बिट के कुछ महत्वपूर्ण प्रदर्शन लाभ प्राप्त किए हैं। नवीनतम को एक्लिप्स के माध्यम से संकलित किया गया है और, रन टाइम में, पता लगाते हैं कि सीपीयू एआरएम, इंटेल या एमआइपी है, फिर 32 बिट या 64 बिट आर्किटेक्चर।

इंटेल सीपीयू के लिए पिछले विंडोज़ संकलनों पर, एसएसई प्रकार के सिमडी निर्देशों का उपयोग करने के कारण 64 बिट काम 32 बिट से बहुत तेज हो सकता है। हालांकि, पिछड़े असंगतता के साथ बाद में 32 बिट संकलक, लगभग समान कोड और समान गति पैदा करता है।

एंड्रॉइड बेंचमार्क का विवरण निम्नलिखित में से है, ए 53 से 32 बिट और 64 बिट परिणाम दिखाते हैं और 1.2 गीगाहर्ट्ज कोर्टेक्स-ए 9 के माध्यम से। अंत में कुछ असेंबली कोड लिस्टिंग हैं जो उपयोग किए जा रहे विभिन्न निर्देशों की पहचान करते हैं। नीचे परिणामों का सारांश दिया गया है।

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

Whetstone बेंचमार्क - (छोटे छोरों) समान प्रदर्शन, EXP कार्यों का उपयोग कर परीक्षण के संकलन से प्रभावित समग्र रेटिंग के साथ।

धस्टोन बेंचमार्क - नवीनतम एमआइपीएस / मेगाहर्ट्ज 1.09 32 बिट, 1.96 64 बिट, 1.10 ए 9 - शायद 64 बिट अनुकूलित।

लिनपैक बेंचमार्क - (एन = 100) 64 बिट डीपी 1.97 x तेजी से, एसपी 2.67 x - विधानसभा कोड देखें।

लिवरमोर लूप्स - (24 गुठली) औसत 1.5 गुना तेज, 0.8 से 7.9 बार

L1 / L2 कैश और रैम टेस्ट

MemSpeed ​​- फ्लोट और पूर्णांक गणना - लाभ 2.2 x, रैम 1.5 x।

BusSpeed ​​- पूर्णांक डेटा स्ट्रीमिंग और फट रीडिंग - स्ट्रीमिंग 2.0 x L1, 1.5 x L2, 1.25 x RAM - 2.6 x L1, समान L2 और RAM फट।

RandMem - एक ही जटिल अनुक्रमण संरचना से क्रमिक और यादृच्छिक पढ़ना और पढ़ना / लिखना - आम तौर पर पढ़ने पर थोड़ा तेज लेकिन इसी तरह का / धीमा पढ़ने और लिखने के लिए।

फिर ऊपर के एमपी संस्करण हैं और अधिकतम एसपी एमएफएलओपीएस (एमपी-एमएफएलओपीएस) को मापने के लिए 4 कोर अधिकतम 2.7 जीएफएलओपीएस 32 बिट और 5.5 जीएफएलओपीएस 64 बिट के साथ हैं। नियॉन इंट्रिंसिक्स का उपयोग करते हुए एक संस्करण भी है जहां 64 बिट कंपाइलर 10.8 GFLOPS बनाम 5.7 से 32 बिट्स पर वैकल्पिक निर्देश उत्पन्न करता है - विधानसभा लिस्टिंग देखें। मेरे पास विंडोज 10 और एंड्रॉइड इंटेल एटम आधारित टैबलेट के लिए इन बेंचमार्क के संस्करण भी हैं - 64 बिट और 32 बिट विंडोज, 32 बिट एंड्रॉइड - पूर्ण 64 बिट पूरी तरह से लागू नहीं - 64 बिट लिनक्स कर्नेल लेकिन 32 बिट एंड्रॉइड।

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

साथ ही, मेरे पास 32 बिट और 64 बिट लिनक्स / इंटेल संस्करण हैं।

रॉय लॉन्गबॉटम


3

यहाँ मैं RPI3 Aarch64 कर्नेल संकलित करता हूं:

सबसे पहले, आपको Linaro anarch64 की आवश्यकता होगी: https://releases.linaro.org/compenders/toolchain/binaries/latest/aarch64-linux-gnu/gcc-linaro-6.2.1-2018.11.11-x86_64_ARch64-linux-gnu.tar .xz

डीकंप्रेस, इसे कहीं रखें, उदाहरण: /opt/toolchains/gcc-linaro-6.2.1-2016.11-x86_64_ARch64-linux-gnu

फर्मवेयर, वीसी, कर्नेल स्रोत को डाउनलोड करने और मॉड्यूल के साथ संकलन संकलन करने के लिए यहां मेरी स्क्रिप्ट है, मैं इस स्क्रिप्ट का उपयोग अपने जेनकींस सर्वर के लिए करता हूं ताकि आपको जो चाहिए वह चुनता है:

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 को अनटार करें और अपने sdcard में डालें।

महत्वपूर्ण : AARCH64 कर्नेल को बूट करने के लिए आपको config_xt को arm_control = 0x200 डालना होगा

या आप सिर्फ मेरे जेनकिंस पर मेरे प्रीबिल्ट का उपयोग कर सकते हैं: https://jenkins.sandpox.org/job/RPI3_KERNEL_AARCH64/


3

आज के रूप में, ऐसा लगता है कि फेडोरा और आर्कलिनक्स अच्छी तरह से समर्थित हैं।

यदि आप आर्क रास्ते पर जाते हैं, तो इससे आपको छवि बनाने में मदद मिलेगी (मेरे लिए linux / rpi3 पर make linux) यह था और इससे आपको वाईफाई शुरू करने में मदद मिलेगी।

मामले में आपको यह सुनिश्चित करने की आवश्यकता है कि आपके पास कौन सा रास्पबेरी है, इस गाइड का उपयोग करें

इसके अलावा arm_control=0x200पदावनत arm_64bitकिया जाता है और इसके बजाय इसका उपयोग किया जाना चाहिए /boot/config.txt

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.