html5-img
1 / 57

Riistvarapõhine programmeerimine

Riistvarapõhine programmeerimine. Loeng 12 ARM protsessori andmemudel ARM käsustik. ARM protsessori andmemudel. Registrid Jooksva programmi staatus Konveier Katkestused Protsessori tuuma laiendid. ARM: Programmeerija vaade. ALU Barrel shifter MAC Register file Instruction decoder

ananda
Download Presentation

Riistvarapõhine programmeerimine

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Riistvarapõhine programmeerimine Loeng 12 ARM protsessori andmemudel ARM käsustik

  2. ARM protsessori andmemudel • Registrid • Jooksva programmi staatus • Konveier • Katkestused • Protsessori tuuma laiendid ID218 Riistvaralähedane programmeerimine

  3. ARM: Programmeerija vaade • ALU • Barrel shifter • MAC • Register file • Instruction decoder • Address register • Incrementer • Sign extender ID218 Riistvaralähedane programmeerimine

  4. Registrid I • Kokku 37 • 32 bit • Kuus rühma • Üldregistrid • Prefix r • Data regisrid • r0 – r15 ID218 Riistvaralähedane programmeerimine

  5. Registrid II • Eriregistrid • Sp (r13) - Pinuviit • Lr (r14) - alamprogrammist naasmise aadress • Pc (r15) - käsuloendur ID218 Riistvaralähedane programmeerimine

  6. Jooksva programmi staatus ID218 Riistvaralähedane programmeerimine

  7. Protsesori olekud (mode) I • Kokku 7 olekut • Abort • Fast interrupt request • Interrupt request • Supervisor • System • Undefined • User ID218 Riistvaralähedane programmeerimine

  8. Protsessori olekud (mode) II • Abort - privilegeeritud • Eebaõnnestunud mäluoperatsioon • Fast interrupt request - privilegeeritud • Kõrgema taseme katkestuse töötlemine • Interrupt request - privilegeeritud • Madalama taseme katkestuse töötlemine ID218 Riistvaralähedane programmeerimine

  9. Protsessori olekud (mode) III • Supervisor - privilegeeritud • Reset (sisselülitamine) • Operatsioonisüsteem • System – privilegeeritud • Eri-User, rw ligipääs cpsr • Undefined – privilegeeritud • Tundmatu käsk • User – mitte privilegeeritud • Programmid ja rakendused ID218 Riistvaralähedane programmeerimine

  10. Protsessori olekud (mode) IV ID218 Riistvaralähedane programmeerimine

  11. Protsessori olekud (mode) V Oleku muutmine: • Programmi poolt • registri cpsr otsekirjutamime • ei kopeeri cpsr - spsr • Riistvara poolt • Katkestus • Reset • viga ID218 Riistvaralähedane programmeerimine

  12. Registrirühmad ID218 Riistvaralähedane programmeerimine

  13. Registrirühma vahetamine • User olek • r13_sp • r14_lr • r15_pc • cpsr • Interrupt olek • r13_irq • r14_irq • spsr_irq ID218 Riistvaralähedane programmeerimine

  14. Käsustiku olekud I • ARM - 32 bit käsk • Thumb - 16 bit käsk • Jazelle - 8-bit Java kood, ei ole avalik ID218 Riistvaralähedane programmeerimine

  15. Käsustiku olekud II ID218 Riistvaralähedane programmeerimine

  16. Katkestuse maskid • Interrupt, bit 7 • I=0, lubatud • I=1, keelatud • Fast interrupt, bit 6 • F=0, lubatud • F=1, keelatud ID218 Riistvaralähedane programmeerimine

  17. Tingimuse lipud ID218 Riistvaralähedane programmeerimine

  18. Programmi staatuse näide • Carry=1, ülejäänud lipud = 0 • IRQ lubatud, FIR keelatud • ATM käsustiku olek • Protsessori olek supervisor (svc) ID218 Riistvaralähedane programmeerimine

  19. Konveier I • ARM7 - 3 sammuga konveier • Käsu võtmine • Käsu dekodeerimine • Käsu täitmine ID218 Riistvaralähedane programmeerimine

  20. Konveier II MSR – lubab IRQ, I=0 ID218 Riistvaralähedane programmeerimine

  21. Konveier III LDR PC 0x8000 NOP PC+4 0x8004 DCD PC+8 0x8008 ID218 Riistvaralähedane programmeerimine

  22. Konveier IV • Harukäsk tühjendab konveierit • Võib olla kasutusel harude ennustamine • Katsestus • Täitmise etapi käsk täidetakse lõpuni • Võtmise ja dekodeerimise etapi käsud täidetakse peale katsestust ID218 Riistvaralähedane programmeerimine

  23. Katkestused I • Reset • Tundmatu käsk • Tarkvara katkestus • Mälutõrge käsutoomisel • Mälutõrge andmeoperatsioonil • IRQ taotlus • FIR taotlus ID218 Riistvaralähedane programmeerimine

  24. Katkestused II ID218 Riistvaralähedane programmeerimine

  25. Tuuma laiendid • Cache • Jäigalt seotud mälu • Mäluhaldurid • Abiprotsessorid ID218 Riistvaralähedane programmeerimine

  26. Cache I vonNeumanni arhitektuur ID218 Riistvaralähedane programmeerimine

  27. Jäigalt seotud mälu Harvardii arhitektuur ID218 Riistvaralähedane programmeerimine

  28. Cache ja jäigalt seotud mälu Harvardi arhitektuur ID218 Riistvaralähedane programmeerimine

  29. Mäluhaldurid • Nonprotected memory • MPU • Piirkonnapõhine ligipääs • MMU • Piirkonnapõhine ligipääs • mälujaotus ID218 Riistvaralähedane programmeerimine

  30. Abiprotsessorid • Abiprotsessor (coprocessor) • Laiendab käsustiku, näiteks vektor-ujuva komaga operatsioonid • Lisab konfiguratsiooniregistrid, näiteks MPU mäluhalduri jäoks ID218 Riistvaralähedane programmeerimine

  31. ARM-i käsustik • Andmetöötlemise käsud • Hargnemise käsud • Laadimise-salvestamise käsud • Tarkvara katkestuse käsud • Programmi staatuse käsud • Konstantide laadimine • Tingimustäitmine ID218 Riistvaralähedane programmeerimine

  32. ARM käsk <käsk> <Op3> <Op1> <Op2> <instruction> {<cond>} {S} Rd, Rn, Rm Op1 Operand 1 Rn Op2 Operand 2 Rm Op3 Sihtkoht Rd ID218 Riistvaralähedane programmeerimine

  33. Andmetöötluse käsud • Teisaldamise käsud • Aritmeetilised käsud • Loogilised käsud • Võrdluse käsud • Korrutamise käsud ID218 Riistvaralähedane programmeerimine

  34. Teisaldamise käsud I <instruction> {<cond>} {S} Rd, N MOV Move a 32-bit valie into register, Rd = N MVN Move the NOT of the 32-bit value into register, Rd = -N ID218 Riistvaralähedane programmeerimine

  35. Teisaldamise käsud II R5 = 5 R7 = 8 MOV r7, r5; R5 = 5 R7 = 5 ID218 Riistvaralähedane programmeerimine

  36. Nihketoru I • Võimaldab muuta operand Rm • Ei nõua eraldi protsessoriaega ID218 Riistvaralähedane programmeerimine

  37. Nihketoru II ID218 Riistvaralähedane programmeerimine

  38. Nihketoru III R5 = 5 R7 = 8 MOV r7, r5, LSL #2; r7=r5*4=20 R5 = 5 R7 = 20 ID218 Riistvaralähedane programmeerimine

  39. Nihketoru IV SHL #1 ID218 Riistvaralähedane programmeerimine

  40. Nihketoru V Cpsr = nzcvqiFt_USER R0 = 0x00000000 R1 = 0x80000004 MOVS r0, r1, LSL #1; Cpsr = nzCvqiFt_USER R0 = 0x00000008 R1 = 0x80000004 ID218 Riistvaralähedane programmeerimine

  41. Aritmeetilised käsud I <instruction> {<cond>} {S} Rd, Rn, N ID218 Riistvaralähedane programmeerimine

  42. Aritmeetilised käsud II R0 = 0x00000000 R1 = 0x00000002 R2 = 0x00000001 SUB r0, r1, r2; R0 = 0x00000001 ID218 Riistvaralähedane programmeerimine

  43. Aritmeetilised käsud III R0 = 0x00000000 R1 = 0x00000077 RSB r0, r1, #0; rd=0x0-r1 R0 = 0xFFFFFF89 (-R1) ID218 Riistvaralähedane programmeerimine

  44. Aritmeetilised käsud IV Cpsr = nzcvqiFt_USER R1 = 0x00000001 SUBS r1, r1, #1; Cpsr = nZCvqiFt_USER R1 = 0x00000000 ID218 Riistvaralähedane programmeerimine

  45. Aritmeetilised käsud V R0 = 0x00000000 R1 = 0x00000005 ADD r0, r1, r1, LSL #1; R0 = 0x0000000F R1 = 0x00000005 ID218 Riistvaralähedane programmeerimine

  46. Loogilised käsud I <instruction> {<cond>} {S} Rd, Rn, N ID218 Riistvaralähedane programmeerimine

  47. Loogilised käsud II R0 = 0x00000000 R1 = 0x02040608 R3 = 0x10305070 ORR r0, r1, r2 R0 = 0x12345678 ID218 Riistvaralähedane programmeerimine

  48. Loogilised käsud III R1 = 0…b1111 R2 = 0…b0101 BIC r0, r1, r2; Rd=Rn AND NOT (N) R0 = 0…b1010 ID218 Riistvaralähedane programmeerimine

  49. Võrdluse käsud I <instruction>{<condition>} Rn, N ID218 Riistvaralähedane programmeerimine

  50. Võrdluse käsud II Cpsr = nzcvqiFt_USER R0 = 0x00000004 R9 = 0x00000004 CMP r0, r9; Cpsr = nZcvqiFt_USER ID218 Riistvaralähedane programmeerimine

More Related