ZPU (микропроцессор) - ZPU (microprocessor) - Wikipedia

Кеңестік / ресейлік зениттік мылтықты қараңыз ZPU.

The ZPU Бұл микропроцессор стек машинасы а. қамтитын электронды жүйелерде қадағалау кодын жүргізу үшін Zylin AS норвегиялық компаниясы жасаған далалық бағдарламаланатын қақпа массиві (FPGA).[1]

ZPU - бұл салыстырмалы түрде жақында орналасқан, шағын экономикалық орны бар стек-машина және оны қолданушылар мен қолданушылар саны артып келеді.[2][3] Ол өте аз мөлшерде электронды логиканы қажет ететін етіп жасалған, бұл FPGA-да басқа мақсаттар үшін электронды логиканы қол жетімді етеді. Оны ыңғайлы етіп жасау үшін оның порты бар GNU Compiler коллекциясы. Бұл компиляторсыз процессорларға қарағанда қолдануды едәуір жеңілдетеді. Кішкентай өлшемнің орнына жылдамдықты құрбан ете отырып, ол есептеулердің аралық нәтижелерін регистрлерде емес, төмен түсірілген стекте сақтайды.[1]

Zylin Corp. ZPU-ді 2008 жылы бастапқы көзге айналдырды.[1]

Пайдалану

Көптеген электрондық жобалар FPGA-да электрондық логиканы қамтиды. Микропроцессордың болуы да ысырап, сондықтан FPGA-да электронды логикаға CPU қосу әдеттегідей. Көбінесе, егер процессор ресурстарды аз пайдаланса, аз, арзан FPGA-ны қолдануға болады. Бұл ZPU шешуге арналған дәл жағдай.

ZPU бағдарламалық қамтамасыздандырумен жақсы жұмыс істейтін жүйенің әртүрлі тапсырмаларын шешуге арналған, мысалы, қолданушы интерфейсі. ZPU өте баяу, бірақ оның кішігірім мөлшері кез-келген қажетті жоғары жылдамдықты алгоритмді FPGA-ға орналастыруға көмектеседі.

Тағы бір мәселе, FPGA-ға арналған көптеген процессорлар тек FPGA-лар өндірушісінің қол жетімді жабық көзі болып табылады. Кейде жоба қауіпсіздікті тексеру, білім беру мақсаттары үшін немесе басқа себептер бойынша кеңінен таратылатын дизайнға ие болуы керек. Осы меншікті процессорлардағы лицензиялар оларды пайдаланудың алдын алады. ZPU бастапқы көзі болып табылады.

Кейбір жобаларға код қажет, олар кішігірім болуы керек, бірақ үлкен коды бар CPU-да жұмыс істейді. Сонымен қатар, жоба GNU Compiler Collection үшін кодтардың, компиляторлардың және күйін келтіру құралдарының кең таңдауынан пайда көруі мүмкін. Бұл жағдайларда эмуляторды мақсатты CPU-да ZPU нұсқаулар жиынтығын орындау үшін жазуға болады, ал ZPU компиляторларын кодты шығару үшін пайдалануға болады. Алынған жүйе баяу, бірақ көптеген CPU-ға қарағанда аз жадқа жинақтайды және жобаға әртүрлі компиляторлар мен кодтарды қолдануға мүмкіндік береді.[4]

Дизайн ерекшеліктері

ZPU электронды логиканың мөлшерін азайту үшін нақты жасалған. Оның минималды нұсқасы бар, бірақ оны GNU Compiler коллекциясы үшін кодтауға болады. Ол сонымен қатар FPGA-да болуы керек регистрлер санын азайтады, флип-флоптар санын азайтады. Тіркеушілердің орнына аралық нәтижелер стекте, жадта сақталады.[1]

Сондай-ақ, оның жады үнемдейтін шағын коды бар. Стек машинасының нұсқауларында регистрдің идентификаторы болудың қажеті жоқ, сондықтан ZPU коды басқа RISC процессорларына қарағанда кішірек, бұл кеңістіктің шамамен 80% ғана қажет ARM Holdings 2. Бас бармақ.[1] Мысалы, қол қойылған жедел телефон ZPU-ға 32 биттік мәнді ең көп дегенде 5 байт нұсқаулықта, ал аз мөлшерде сақтауға көмектеседі. Көптеген RISC процессорлары кем дегенде сегіз байтты қажет етеді.

Сонымен, оның нұсқауларының шамамен 2/3 бөлігі басқа 1/3 «қажетті» нұсқаулықтың көмегімен іске асырылатын микробағдарлама арқылы шығарылуы мүмкін. Нәтиже өте баяу болғанымен, нәтижесінде пайда болатын процессорға 446 іздеу кестесі қажет (FPGA күрделілігі, шамамен 1700 электронды логикалық қақпаға тең).

ZPU нөлдік орнынан басталатын 32-байттық кодтық кеңістіктен тұратын қалпына келтіру векторына ие. Сондай-ақ, оның 32 байт код кеңістігінен тұратын векторы 32 мекен-жайдан басталатын бір жиекке сезімтал үзілісі бар. 2-ден 63-ке дейінгі векторлардың әрқайсысында 32 байт бос орын бар, бірақ 33-тен 63-ке дейінгі нұсқауларды орындау үшін кодқа сақталған.

ZPU базасында мәліметтердің 32 биттік жолы бар. ZPU-да логиканы үнемдеу үшін кеңейтілген 16-биттік деректер жолы бар нұсқа бар.

Құралдар мен ресурстар

ZPU-да GNU Compiler жиынтығының жақсы тексерілген порты бар.[1] Энтузиастар мен микробағдарлама инженерлері портативті болды ECos,[1] FreeRTOS[5] және μClinux.[6]Энтузиастардың кем дегенде бір тобы танымал даму ортасын көшіріп алды Ардуино және оны ZPU-ге бейімдеді.[7]

Қазір ZPU ядросының бірнеше моделі бар. Бастапқы цилин ядроларынан басқа,[1] сонымен қатар ZPUino ядролары бар,[7] және ZPUFlex ядросы.[8] Цилин ядросы минималды FPGA ізіне арналған және 16 биттік нұсқаны қамтиды. ZPUino жылдамдығы бойынша практикалық жақсартуларға ие, эмуляцияланған нұсқаулықтарды аппараттық құралдармен алмастыра алады және чипке арналған жүйеге енгізілген. ZPUFlex сыртқы жад блоктарын пайдалануға арналған және эмуляцияланған нұсқауларды аппараттық құралдармен алмастыра алады.

Академиялық жобаларға энергия тиімділігін зерттеу және жетілдіру кіреді,[9] және сенімділікті зерттеу.[10]

Жылдамдықты жақсарту үшін, көптеген орындаушылар эмуляцияланған нұсқауларды орындады және стек-кэшті қосты.[7][8][9] Бұдан басқа, бір орындаушы екі стек архитектурасы құбыр өткізуге мүмкіндік береді (яғни жылдамдықты сағат циклына бір нұсқаулыққа дейін арттыру), бірақ бұл компиляторды өзгертуді қажет етуі мүмкін деп айтты.[9]

Бір орындаушы стек-кэшпен және сағаттық шлюзді автоматты түрде енгізу арқылы қуатты 46% -ға азайтты.[9] Содан кейін қуатты пайдалану шамамен кішігірім ашық көзге тең болды Янтарь ARM v2a архитектурасын жүзеге асыратын ядро.

Ақаулыққа төзімділік ең көп көмектесетін ZPU бөліктері адрестік шина, стек көрсеткіші және бағдарламалық есептегіш болып табылады.[10]

Нұсқаулық жиынтығы

«TOS» - бұл «Top Of Stack» аббревиатурасы. «NOS» - «Офистің жоғарғы жағында» аббревиатурасы.

Қажетті ZPU нұсқаулар жинағы
Аты-жөніЕкілікСипаттама
БЕЙНЕ00000000Процессорды тоқтатыңыз және / немесе түзетушіге өтіңіз.
IM_x1хххххххҚол қойылған 7 битті тез арада TOS-қа итеріңіз немесе қосыңыз.
STORESP_x010хххххTOS-ді шығарыңыз және оны жоғарыдан жылжытылған жерде сақтаңыз.
LOADSP_x011хххххСтектегі индекстелген мәннен алып, оны TOS-қа итеріңіз.
EMULATE_x001хххххХ векторындағы коды бар команданы еліктеңіз.
ADDSP_x0001ххххСтекте индекстелген мәннен алып, мәнді TOS-қа қосыңыз.
POPPC00000100TOS мекен-жайын ашып, оны компьютерге сақтаңыз.
ЖҮКТЕУ00001000Мекенжайды ашып, жүктелген жады мәнін TOS-қа жіберіңіз.
ДҮКЕН00001100NOS-ты TOS көрсетілген жадқа сақтаңыз. Екі поп.
PUSHSP00000010Ағымдағы SP-ны TOS-қа итеріңіз.
POPSP00001101TOS-ны шығарыңыз және оны SP-ге сақтаңыз.
ҚОСУ00000101TOS және NOS-ті толықтай қосу.
ЖӘНЕ00000110TOS және NOS биттік және.
НЕМЕСЕ00000111TOS және NOS биттік жолымен.
ЖОҚ00001001Бос жолмен емес.
FLIP00001010TOS биттік ретін өзгерту.
ЖОҚ00001011Операция жоқ. (Әдетте кідірту циклдары немесе код кестелері үшін қолданылады.)

33-тен 63-ке дейінгі кодтық нүктелер 2-ден 32-ге дейінгі векторлармен эмоциялануы мүмкін: LOADH және STOREH (16-биттік жадыға қол жеткізу), LESSTHAN (салыстыру 1-ді true, 0-ге жалған), LESSTHANOREQUAL, ULESSTHAN, ULESSTHANOREQUAL, SWAP (TOS бар NOS), MULT, LSHIFTRIGHT, ASHIFTLEFT, ASHIFTRIGHT, CALL, EQ, NEQ, NEG, SUB, XOR, LOADB және STOREB (8-биттік жады), DIV, MOD, EQBRANCH, NEQBRANCH, POPPCREL, CONFIG, PUSH, PUSHSPADD, HELFMULT, CALLPCREL

Әдебиеттер тізімі

  1. ^ а б c г. e f ж сағ «ZPU - әлемдер [sic] ең кіші 32 биттік процессор, GCC инструментальды желісі: шолу». opencores.org, Zylin Corp. Алынған 7 ақпан 2015.
  2. ^ Хеннесси, Джон Л .; Паттерсон, Дэвид А. (2012). Компьютерлік архитектура, сандық тәсіл (5-ші басылым). Уолтэм, MA: Эльзевье. ISBN  978-0-12-383872-8.
  3. ^ Асанович, Крсте. «RISC-V: SoC үшін ашық стандарт». EE Times. Universal Business Media. Алынған 7 ақпан 2015.
  4. ^ «ZOG - GNU C + Fortran бар пропеллерге арналған ZPU процессорының өзегі». Parallax форумы. Параллакс. Алынған 6 қыркүйек 2019.
  5. ^ Антонио, Антон. «ZPUino-HDL / zpu / sw / freertos /». GitHub. Антонио Антон. Алынған 7 ақпан 2015.
  6. ^ Лопес, Альваро. «alvieboy / Linux». GitHub. Альваро Лопес. Алынған 7 ақпан 2015.
  7. ^ а б c Лопес, Альваро. «ZPUino». www.alvie.com. Алынған 7 ақпан 2015.
  8. ^ а б AMR. «ZPU Flex». Ретро рэмбингтер. Алынған 9 ақпан 2015.
  9. ^ а б c г. Эриксен, Штейн Ове. «Төмен қуатты микроконтроллер ядросы». NTNU ашық. Norges teknisk-naturvitenskapelige universitet. Алынған 9 ақпан 2015.
  10. ^ а б Зандрахими, М. (2010). «ZPU-да ақаулардың әсері мен таралуын талдау: әлемдегі ең кішкентай 32 биттік процессор». Сапалы электронды дизайн бойынша 2-ші Азия симпозиумы (ASQED). IEEE. 308-313 бет. дои:10.1109 / ASQED.2010.5548320. ISBN  978-1-4244-7809-5.