Для питання про RPi, погляньте на цю тему
(по суті, ви можете використовувати щось на зразок QEMU для запуску зображень).
Щоб відповісти на головне питання:
Чи можна віртуалізувати будь-який процесор на будь-якому іншому процесорі?
Так (певною мірою), однак, це може бути не настільки ефективно, як ви думаєте. І слід зазначити, що тип віртуалізації VirtualBox / VMWare відрізняється від того, про що ви запитуєте, що є насправді Is it possible to EMULATE any CPU on any other CPU?
.
Процесори - це апаратні компоненти, які мають специфічний набір інструкцій (також відомий як оп-коди), з’єднані з ними; ці оп-коди - це конкретні числові значення, які можна перевести на електричному рівні, щоб процесор насправді "щось робив".
Коли програмне забезпечення написане для того, щоб сказати процесору "зробити щось" (наприклад, калькулятор), програмне забезпечення повинно бути побудовано (орієнтоване) на певний процесор. Тобто моє програмне забезпечення повинно бути скомпільоване (перекладене) та зібране таким чином, щоб машинні інструкції можна було зрозуміти машиною, на якій я запускаю своє програмне забезпечення, інакше, якщо воно взагалі працює, я не можу отримати точних результатів, Я чекаю. Інструкції по збірці (оп-коди) для чогось типу 2 + 2 на ARM можуть не точно відповідати інструкціям по збірці на PIC або FPGA, і те, що я поверну, було б сміттям (знову ж, якби воно працювало).
Кожен процесор 'робить щось' дещо інакше, як багато я можу писати англійською мовою, щоб передати свої думки вам, я також міг би передати ті самі думки іспанською або японською мовами, хоча мені доведеться передати їх зовсім по-іншому через не лише синтаксичні відмінності в англійській / іспанській / японській мовах, але відмінності в тому, як ці мови також розібрані в контексті. Якщо ви та я розмовляли (проти письмового спілкування), а ви розмовляли лише японською, а я іспанською, то нам потрібен був перекладач, який вільно володіє обома мовами, щоб правильно спілкуватися, хоча це було б повільніше, ніж пряме спілкування, оскільки ми потрібно, щоб наші мови були правильно розібрані, щоб нічого не «втрачалося при перекладі».
Це те саме поняття з процесором "віртуалізація / емуляція". Якщо ви хочете запускати додатки, які не були побудовані для центрального процесора, на якому ви працюєте (тобто я хочу запустити програмне забезпечення ARM на моєму ПК x86), то програмі потрібно взяти збірку ARM і перевести на збірку x86, щоб дзвінок до draw word on screen
, а не виклик для erase RAM location X
.
Ось чому це не обов'язково неможливо належним чином емулювати будь-який процесор на будь-якому іншому процесорі (якщо він взагалі не може наслідувати x86 на PIC як такому). Процесор робить набагато більше, ніж просто «стискає номери», і вони роблять все це «більше», ДУЖЕ швидко, і багато вимагають, щоб терміни цього все були точними. Емулюючи процесор, ви по суті додаєте шар перекладу між програмним забезпеченням та обладнанням. Додавання цього шару може додати значну кількість часу на виконання інструкцій через те, скільки додаткових інструкцій може знадобитися виконувати. Цей додатковий час може зайняти стільки часу, що програмне забезпечення стане невідповідним або взагалі непридатним (наприклад, грати у відеоігри зі швидкістю 1 кадр в секунду, впевнений, що ви можете це зробити, але для написання "прес-запуску" знадобиться 2 хвилини.
Слід зазначити, що якщо в апаратному забезпеченні (ЦП) вбудований той самий набір інструкцій, він повинен "робити те ж саме", як призначений інший набір інструкцій; тобто (проблема з патентом / ліцензією вбік) Intel може вирішити додати набір інструкцій для процесора ARM в рядок CPU x86_64, щоб ви могли потенційно запускати бінарні файли ARM безпосередньо на цьому процесорі, але вони все одно повинні мати архітектуру 'робити', як це робить архітектура ARM ', або висновок може бути неточним.
Так, можливо, можна емулювати один тип процесора на інший тип процесора, але залежно від того, як / що імітується, це може бути настільки повільним, що вважатиметься нездійсненним або може бути нерозрізненим з людської точки зору (тобто суб'єктивно це "настільки ж швидкий", як і на вбудованому обладнання, але технічно це не так).
Я сподіваюся, що це може допомогти додати трохи ясності.