Bҧng so sánh kӃt quҧ ÿRQăQJOѭӧng bҵng SpyGlass Power
Tәng quan vӅ ÿӅ tài
Ngày nay, thuұt ngӳ Internet of Things (IoT) không còn xa lҥ PjÿmWUӣ WKjQK[XKѭӟng phát triӇn nóng ӣ quy mô công nghiӋS;XKѭӟng này sӁ ҧnh KѭӣQJÿӃn mӑi mһt cӫDÿӡi sӕng con QJѭӡi, tӯ các vҩQÿӅ cá nhân (thông qua Smart Wearable-các thiӃt bӏ thông minh cá nhân, Smart Home - ngôi nhà thông minh, eHealth-cỏc thiӃt bӏ FKăPVyFVӭc khӓHô) cho ÿӃn cỏc vҩQÿӅ xó hӝi và doanh nghiӋp (thông qua Smart City - thành phӕ thông minh, Smart environment - P{LWUѭӡng thông minh, Smart Enterprise - doanh nghiӋp thông minh, Industrial control ± ÿLӅu khiӇn cụng nghiӋpôĈӇ phөc vө cho sӵ phỏt triӇn cӫa IoT, mӝt sӕ Oѭӧng lӟn các thiӃt bӏ ÿDQJYjVӁ ÿѭӧc tҥo ra, kӃt nӕi vӟi nhau Theo nhӳng nghiên cӭu mӟi nhҩt, sӕ Oѭӧng thiӃt bӏ IoT toàn cҫu ÿmOrQ tӟi KѫQ7 tӹ thiӃt bӏ, con sӕ Qj\ÿmYѭӧt qua sӕ thiӃt bӏ GLÿӝng sӱ dөng trên toàn cҫu Cө thӇ, theo IoT Analytics, sӕ Oѭӧng thiӃt bӏ IoT trên toàn cҫu OjKѫQ
7 tӹ thiӃt bӏ YjRQăPYjѭӟc tính sӁ có 22 tӹ thiӃt bӏ YjRQăP7URQJ NKLÿyWheo Gartner, sӕ Oѭӧng thiӃt bӏ IoT trên toàn cҫu là 14.2 tӹ thiӃt bӏ vào QăPYjѭӟc tính sӁ có 25 tӹ thiӃt bӏ YjRQăP1
Các thiӃt bӏ dùng trong mҥng IoT hҫu hӃWÿӅu tích hӧp ít nhҩt mӝt bӝ vi xӱ lý ÿӇ phөc vө cho viӋc kӃt nӕi, thu thұp, xӱ OêÿLӅu khiӇQOѭXWUӳ và truyӅn tҧi dӳ liӋXFNJQJQKѭÿѭDFiFTX\ӃWÿӏQKWѭѫQJWiFQJѭӧc lҥi vӟi bên ngoài Do ÿyQKXFҫu sӕ Oѭӧng vi xӱ OêFzQFDRKѫQVӕ Oѭӧng thiӃt bӏ IoT Cӝng thêm là các thiӃt bӏ dùng trong mҥng IoT yêu cҫu vi xӱ lý cҫn có hiӋu QăQJ ÿDGҥng tӯ thҩSÿӃn cao QKѭQJvӟi chi phí thҩSYjÿһc biӋt là phҧi tiӃt kiӋPQăQJOѭӧng ĈLӅXÿyÿһt ra nhӳng thách thӭc mӟi cho các nhà sҧn xuҩt thiӃt bӏ khi lӵa chӑn các bӝ vi xӱ lý cho thiӃt kӃ cӫa mình
Thӭ nhҩt, hiӋn tҥi nhӳng công ty thành công vӟi kiӃn trúc tұp lӋnh cӫa PuQKÿDQJ thӕng trӏ thӏ WUѭӡng vi xӱ OờQKѭ,QWHO$50,%0,ô ÿӅu cú nhӳng bҵng sáng chӃ trên kiӃn trúc tұp lӋnh mà hӑ ÿDQJVӣ hӳXGRÿyFiFF{QJW\Qj\ ÿӅu tính phí bҧn quyӅQÿӕi vӟi viӋc sӱ dөng kiӃn trúc tұp lӋnh cӫa các công ty Qj\ÿӗng thӡLQJăQFҩm viӋc thiӃt kӃ các bӝ vi xӱ lý sӱ dөng kiӃn trúc tұp lӋnh cӫa hӑ nӃXNK{QJÿѭӧc hӑ cҩp phép Bҩt kì mӝt thӓa thuұn QjROLrQTXDQÿӃn bҧn quyӅn sӱ dөng kiӃn trúc tұp lӋnh ÿӅu phҧi tӕn tӯ 6-WKiQJWUDRÿәi và chi phí phҧi tӕn chӯng tӯ mӝWÿӃQPѭӡi triӋXÿ{OD0ӻ, và tҩt nhiên thӓa thuұn vӟi WUѭӡQJÿҥi hӑc hay nhӳng công ty có quy mô nhӓ lҿ WKѭӡng bӏ loҥi trӯ ViӋc ÿӝc quyӅn ÿmFҧn trӣ sӵ cҥnh tranh Yjÿәi mӟi bҵng viӋFQJăQNK{QJFKRQKLӅu QJѭӡi thiӃt kӃ và chia sҿ nhӳng vi xӱ lý có nhӳng kiӃn trúc tұp lӋnh WѭѫQJWKtFK vӟi nhau [1]
13 Thӭ hai, các sҧn phҭm vi xӱ Oêÿѭӧc thiӃt kӃ mang tính chҩt tәng quát cho mӛi phân khúc sҧn phҭm nhҩWÿӏnh, không tùy chӍQKÿѭӧc thiӃt kӃ ÿӇ tӕi ѭXYӅ hiӋu QăQJ xӱ lý, mӭc tiêu thө QăQJOѭӧng và giá cҧ cho tӯng dòng sҧn phҭm IoT
Thӭ ba, mӛi kiӃn trúc tұp lӋnh cӫa mӛi hãng sӱ dөng mӝt hӋ sinh thái phҫn mӅPULrQJOjPWăQJFKLSKtSKiWWULӇn Thұm chí trên cùng mӝt thiӃt bӏ lҥi sӱ dөng nhiӅu phҫn mӅm khác nhau cӫa nhӳng kiӃn trúc tұp lӋnh khác nhau
Nhӳng thách thӭFÿylà tiӅQÿӅOjÿӝng lӵc ÿӇ FKRUDÿӡi nhӳng vi xӱ lý mã nguӗn mӣ ÿLFQJOjQKӳng kiӃn trúc tұp lӋnh miӉQSKtQKѭQJWKӕng nhҩt Mӝt trong sӕ ÿyOj5,6&-V (phát âm là "risk-five"5,6&YLӃWWҳWWӯ5HGXFHG Instruction Set Computer), là mӝt kiӃn trúc tұp lӋnh mӣÿѭӧc xây dӵng dӵa trên nhӳng nguyên tҳc cӫa kiӃn trúc tұp lӋnh 5,6&ÿmYjÿDQJWKXK~Wÿѭӧc sӵ phát triӇn và ӭng dөng tӯ các nhà khoa hӑFFNJQJQKѭFiFF{QJW\Vӱ dөng vi xӱ lý trên thӃ giӟL7UiLQJѭӧc vӟi hҫu hӃt các kiӃn trúc tұp lӋnh khác, RISC-V hoàn toàn miӉn phí cho bҩt kǤ mөFÿtFKVӱ dөng nào Nó cho phép bҩt kǤ ai có thӇ thiӃt kӃ, sҧn xuҩt và bán các sҧn phҭm phҫn cӭng và phҫn mӅm sӱ dөng RISC-9ĈLӅXÿyVӁ ÿHPÿӃn rҩt nhiӅu lӧi ích quan trӑng cho nӅn công nghiӋp máy tính nói chung và sӵ phát triӇn cӫa IoT nói riêng, QKѭO{LNpRÿѭӧc nhiӅu êWѭӣng sáng tҥo thiӃt kӃ KѫQFiFWKLӃt kӃ bӝ vi xӱ lý có thӇ ÿѭӧFWUDRÿәi, tái sӱ dөng, dӉ tӕLѭXKѫQOjPFKRFKLSKtFӫa bӝ vi xӱ lý trӣ nên rҿ và phù hӧp vӟi các ӭng dөng kiӇu QKѭ,R7 [1]
Ngoài ra RISC-V còn có nhӳng mong muӕn khác là tҥo ra mӝt kiӃn trúc tұp lӋnh tiêu chuҭQFKXQJÿӇ có thӇ thӕng nhҩt và tái sӱ dөng phҫn mӅm trên nhiӅu hӋ thӕng khác nhau và әQÿӏnh trong vài chөFQăPWKD\YuVӱ dөng nhiӅu kiӃn trúc tұp lӋnh khác nhau trên cùng mӝt hӋ thӕng System on Chip (SOC) QKѭWUѭӟFÿk\ĈӇ hiӋn thӵFÿLӅXÿy5,6&-V cho phép mӣ rӝng tұp lӋnh theo Kѭӟng phù hӧp cho tӯng ӭng dөng cө thӇ, thông qua phҫn tұp lӋnh mӣ rӝng (tiêu chuҭn hoһFGRQJѭӡi thiӃt kӃ CPU tӵ ÿӏQKQJKƭD
RISC-9ÿѭӧc phát triӇn lҫn ÿҫu tiên bӣLĈҥi hӑc California, Berkeley YjRQăP&KRÿӃQQD\ÿmFyKjQJFKөc bӝ vi xӱ Oêÿѭӧc phát triӇn dӵa trên kiӃn trúc tұp lӋnh này nhҳm vào nhiӅu mөFÿtFKӭng dөng và phân khúc NKiFQKDX'ѭӟLÿk\OjPӝt sӕ sҧn phҭm CPU RISC-V tiêu biӇu:
RISC-V CPU Nhà phát triӇn KT tұp lӋnh Sҧn phҭm mөc tiêu
Rocket/BOOM Ĉ+&DOLIRUQLD RV64G Máy tính, thiӃt bӏ cá nhân
ORCA Vector Blox RV32IM FPGA
Sodor Ĉ+&DOLIRUQLD RV32I Education SCR1 Syntacore RV32I/E[MC] 9LÿLӅu khiӇn/IoT PICORV32 Clifford Wolf RV32IMC 9LÿLӅu khiӇn/IoT Z-Scale Ĉҥi hӑc Berkeley RV32IM 9LÿLӅu khiӇn/IoT RI5CY ETH Zurich
RV32IMC[F]X 9LÿLӅu khiӇn/IoT
ViӋFÿӅ xuҩt và hiӋn thӵc mӝt kiӃn trúc tұp lӋnh mӟi ÿӇ có thӇ sӱ dөng ÿѭӧc là rҩt tӕn kém Bӣi vì nhӳQJQJѭӡi thiӃt kӃ máy tính WKѭӡng không ÿӫ khҧ QăQJWjLFKtQKÿӇ làm viӋc miӉn phí và viӋc phát triӇn vi xӱ lý dӵa trên kiӃn trúc tұp lӋnh mӟi còn ÿzLKӓi chuyên môn, kinh nghiӋm thiӃt kӃ rҩt cao cӫa nhiӅu chuyên ngành QKѭÿLӋn tӱ kӻ thuұt sӕ, trình biên dӏch, hӋ ÿLӅu hành, kӻ thuұt phҫn mӅm ô Ngoài ra, cҫn cú cỏc cụng cө ÿӇ mụ phӓng, kiӇm tra chҩt Oѭӧng, kiӇm thӱ chӭFQăQJ, tәng hӧp ra mҥch ÿLӋn tӱ YjÿROѭӡng các thông sӕ vӅ tiêu tӕQQăQJOѭӧng cӫa thiӃt kӃ Các công cө này cҫn phҧi mua bҧn quyӅn YjFNJQJUҩt tӕn kém Vì vұy, khó kiӃPÿѭӧc mӝWÿӝi thiӃt kӃ ÿӝc lұp nào bên ngoài các công ty thiӃt kӃ vi xӱ lý chuyên nghiӋS QKѭ $50 ,QWHO IBM, MIP6ôÿӇ ÿӭng ra xõy dӵng kiӃn trỳc tұp lӋnh mӟLQKѭRISC-9'RÿyYLӋc ÿyQJJyStӯ rҩt nhiӅu thành viên ÿӃn tӯ cӝQJÿӗng sӱ dөng RISC-V mang ý QJKƭDTX\ӃWÿӏQKÿӃn sӵ thành công cӫa kiӃn trúc tұp lӋnh mӟi nàyĈy FNJQJ là mӝt trong nhӳng êQJKƭDPjOXұQYăQQj\muӕn KѭӟQJÿӃn, ÿyOjWKDPJLDYjR tìm hiӇu, sӱ dөng, thiӃt kӃ, kiӇPÿӏQKYjÿiQKJLisҧn phҭPOLrQTXDQÿӃn kiӃn trúc tұp lӋnh RISC-V
1JRjLUDQKѭÿӅ cұp ӣ phía trên, nhu cҫu cӫa các sҧn phҭm IoT rҩWÿD dҥng vӅ hiӋXQăQJxӱ lý FNJQJQKѭ hiӋu quҧ trong sӱ dөng QăQJOѭӧng, và giá cҧ phҧi rҿ [5], cho nên cҫn có nhiӅu giҧi pháp thiӃt kӃ linh hoҥt ÿiSӭng tӯng dòng sҧn phҭm IoT cө thӇ 'RÿyOXұQYăQQj\FNJQJKѭӟQJÿӃn viӋFÿӅ xuҩt mӝWWKD\ÿәi thiӃt kӃ ÿyQJ góp thêm giҧi pháp cho các sҧn phҭm IoT.
Mөc tiêu cӫDÿӅ tài
Mөc tiêu cӫDÿӅ tài cө thӇ QKѭVDX x Tìm hiӇu vӅ kiӃn trúc tұp lӋnh mӟi RISC-V và vӅ mӝt vi xӱ OêÿLӇn hình hiӋn thӵc kiӃn trúc tұp lӋnh này
15 x Tìm hiӇu vӅ vLÿLӅu khiӇn Pulpino là mӝt vLÿLӅu khiӇn sӱ dөng vi xӱ lý RISC-V ÿѭӧc phát triӇQKѭӟng ÿӃn các sҧn phҭm IoT x ĈӅ xuҩt và hiӋn thӵc mӝt bӝ nhӟ ÿӋm lӋnh, tích hӧp vào vLÿLӅu khiӇn Pulpino nhҵm giúp cho vLÿLӅu khiӇn này có thiӃt kӃ linh hoҥWKѫQ, tӕn ít tài nguyên YjQăQJOѭӧng KѫQ x ThiӃt lұp mӝt nӅn tҧng hӛ trӧ cho viӋc hӑc tұp, nghiên cӭu kiӃn trúc máy tính FNJQJQKѭthiӃt kӃ phҫn cӭng tҥi WUѭӡng Ĉҥi hӑc Bách Khoa TPHCM.
Giӟi hҥn cӫDÿӅ tài
ĈӅ tài sӁ tұp trung nghiên cӭu kiӃn trúc vi xӱ lý RI5CY và thiӃt kӃ cӫa vLÿLӅu khiӇn Pulpino nҵm trong dӵ án PULP, cùng vӟi P{LWUѭӡng mô phӓng sӱ dөng ModelSim cӫa vi ÿLӅu khiӇn này Ngoài ra, ÿӅ tài sӁ tìm hiӇu và xây GӵQJQKӳQJP{LWUѭӡQJkhác ÿӇFyWKӇÿiQKJLiWKLӃWNӃ WUѭӟFYjVDXNKLVӱD ÿәLQKѭP{LWUѭӡQJWәQJKӧS EҵQJF{QJFө*HQXVP{LWUѭӡQJÿRKLӋXVXҩWCPU EҵQJӭQJGөQJ&RUH0DUNKD\P{LWUѭӡQJÿRQăQJOѭӧQJ WLrXWKөEҵQJF{QJFө6S\*ODVV3RZHU.
Bӕ cөc cӫa luұQYăQ
LuұQYăQÿѭӧc chia thành 5 FKѭѫQJsҳp xӃp theo bӕ cөc sau:
&KѭѫQJ2: Trình bày nhӳng FѫVӣ lý thuyӃt ÿѭӧc sӱ dөng có liên quan ÿӃn ÿӃn nhӳng nӝi dung nghiên cӭu cӫDÿӅ WjLQKѭ giӟi thiӋu tәng quan kiӃn trúc tұp lӋnh mӣ RISC-V, vӅ thiӃt kӃ hӋ thӕng cӫa vLÿLӅu khiӇn Pulpino và vi xӱ Oêÿѭӧc sӱ dөQJWURQJYLÿLӅu khiӇn này là vi xӱ lý RI5CY, kiӃn thӭc tóm tҳt bӝ nhӟ ÿӋm lӋQKFNJQJQKѭFiFQJKLrQFӭu liên quan ÿӃQÿӅ tài cӫa luұQYăQ
&KѭѫQJ3Ĉk\OjFKѭѫQJWUӑng tâm cӫa luұQYăQ&KѭѫQJQj\ phân tích YjÿӅ xuҩWWKD\ÿәi vi kiӃn trúc cӫDYLÿLӅu khiӇn Pulpino cùng vӟi kiӃn trúc thiӃt kӃ tәng quát cho bӝ nhӟ ÿӋm lӋnhĈӗng thӡi, phҫn sau cӫDFKѭѫQJQj\ sӁ trình bày chi tiӃt vӅ cách hiӋn thӵc thiӃt kӃ cӫa bӝ nhӟ ÿӋm lӋnh
&KѭѫQJ4: &KѭѫQJQj\trình bày vӅ P{LWUѭӡng mô phӓng, cách thӭc tiӃn hành thӵc nghiӋm, báo cáo và phân tích kӃt quҧ thӵc nghiӋm
&KѭѫQJ5: Ĉk\OjFKѭѫQJÿӇ ÿ~FNӃt lҥi luұQYăQYjÿѭDUDÿӅ xuҩt cho Kѭӟng phát triӇn tiӃp theo cӫDÿӅ tài
2.1 6ѫOѭӧc vӅ kiӃn trúc tұp lӋnh RISC-V
.LӃQWU~FWұSOӋQK RISC-V ÿѭӧFWKLӃWNӃWKHRNLӇXPRGXOH QKҵPFKR phép FiFQKjSKiWWULӇQYL[ӱOê5,6&-9FyWKӇOLQKKRҥWOӵDFKӑQÿѭӧFNLӃQ WU~FSKKӧSQKҩWFKRӭQJGөQJFӫDKӑ RISC-9ÿӏQKQJKƭDNLӃQWU~FWұSOӋQK VӕQJX\rQ32-bit RV32I là NLӃQWU~FWұSOӋQK FѫEҧQQKҩW9ӟL NLӃQWU~FWұSOӋQK FѫVӣ Qj\YL[ӱOê5,6&-V ÿm có WҩWFҧQKӳQJ OӋQKFѫEҧQQKӳQJOӋQKÿLӅX NKLӇQOXӗQJ Eӝ WKDQKJKLEӝQKӟFiFKÿiQKÿӏDFKӍEӝQKӟ ôYYôÿӫÿӇKLӋQ WKӵFPӝWYL[ӱOêÿѫQJLҧQGҥQJWәQJTXát KӛWUӧÿҫ\ÿӫFKRSKҫQPӅP và trình ELrQGӏFK
TӯNLӃQWU~FWұSOӋQK FѫVӣ Qj\QKjSKiWWULӇQYL[ӱOê5,6&-V FyWKӇ OLQKKRҥWFKӑQNӃWKӧSYӟLPӝWKD\QKLӅXWұSOӋQK PӣUӝQJW\FKӑQNKiF cho FiFӭQJGөQJPөFWLrX 7ұSOӋQKPӣUӝQJFyWKӇOjWұSOӋQKPӣUӝQJFKXҭQFӫD QKjViQJOұS5,6&-9KRһFWұSOӋQKPӣUӝQJSKLWLrXFKXҭQFӫDQKjSKiWWULӇQ
YL [ӱ Oê 5,6&-9 FKR PӝW VҧQ SKҭP PөF WLrX QKҩW ÿӏQK
RV32I Base Integer Instruction Set, 32-bit WұSOӋQKFѫVӣ RV32E Base Integer Instruction Set (embedded)
RV64I Base Integer Instruction Set, 64-bit
RV128I Base Integer Instruction Set, 128-bit
%̫QJ2.1: %̫QJFiFW̵SO QKF˯Vͧ YjPͧU͡QJFͯD5,6&-V ĈӇKӛWUӧWӕWKѫQFKRYLӋFSKiWWULӇQKӋVLQKWKiLSKҫQPӅPFӫDYL[ӱOêRISC-9QKjViQJOұS5,6&-9ÿmFXQJFҩSVҹQPӝWWұSFiFWұSOӋQKPӣUӝQJWLrXFKXҭQEDRJӗPSKpSQKkQFKLDVӕQJX\rQWұS0FiFWRiQWӱQJX\rQWӱWұS$SKpSWRiQYӟLVӕWKӵFGҩXSKҭ\ÿӝQJÿӝFKtQK[iFÿѫQWұS)SKpSWRiQYӟLVӕWKӵFGҩXSKҭ\ÿӝQJÿӝFKtQK[iFNpSWұS'0ӝW NLӃQWU~FWұSOӋQK KӛWUӧWұSOӋQKFѫEҧQ,FQJYӟLWҩWFҧFiFWұSOӋQKYӯDQrX0 A, F, D) JӑLOjNLӃQWU~FWұSOӋQK ÿDPөFÿtFKYLӃWWҳWOjWұS*YtGөQKѭ59*1JRjLUDQKjViQJOұS5,6&-9FzQFXQJFҩSPӝWWұSOӋQKPӣUӝQJWLrXFKXҭQKӳXtFKQӳDOjWұSOӋQKQpQÿӇJLҧPNtFKWKѭӟFFӫDPmPi\WұS&
2.1.2 KLӃQWU~FWұSOӋQK FѫVӣ
KLӃQWU~FWұSOӋQK FѫVӣÿҫXWLên YjFѫEҧQQKҩWÿѭӧFRISC-9ÿӏQKQJKƭD là NLӃQWU~FWұSOӋQK 59,EDRJӗPOӋQKFyWKӇÿѭӧFSKkQFKLDGӵDWUrQ FKӭFQăQJYjopcode WKjQKQKyPQKѭVDX
%̫QJ2.2: 3KkQOR̩LFiFQKyPO QKFͯDW̵SO QK59,
1ӃX[pWYӅÿӏQKGҥQJFӫDOӋQKWKu59,ÿѭӧFFKLDWKjQKViXQKyPR- type, I-type, S-type, B-type, U-type, J-type 7URQJÿy5,68OjEӕQQKyPFKtQKKDLQKyP%Yj-JLӕQJKRjQWRjQQKyPS và U QJRҥLWUӯNKiFQKDXYӅSKҫQWRiQWӱ³LPPHGLDWH´
Hình 2.1: Ĉ͓nh d̩ng l nh cͯa RISC-V
9ӅWKDQKJKLRV32I có PӝWthanh ghi PC và WKDQKJKLWURQJÿyFy PӝWWKDQKJKL x0 OX{QPDQJJLiWUӏ0, FӝQJYӟLWKDQKJKL ÿDPөFÿtFK x1- x31 7ҩWFҧÿӅXFyÿӝUӝQJ-bit (YӟLRV64I ÿӝUӝQJFӫDFiFWKDQKJKLQj\WUӣ thành 64-bit) 7ѭѫQJWӵQKѭNLӃQWU~FWұSOӋQK RISC, RV32I FNJQJFyNLӃQWU~F LOAD-STORE ĈLӅXÿyFyQJKƭDOjFKӍFyFiFOӋQK/RDGYj6WRUHWUX\FұSYjR EӝQKӟFzQOҥLFiFSKpSWRiQVӕKӑFôYYôÿӅXFKӍVӱGөQJFiFWKDQKJKL Ngoài ra RV,FyQJKƭDOjNK{QJJLDQ ÿӏDFKӍlà 32-ELWYjVӱGөQJlittle endian 7ѭѫQJӭQJ, RV64I FyQJKƭDOjNK{QJJLDQÿӏDFKӍOj-bit và RV128I có không JLDQÿӏDFKӍOj 128-bit 59,Yj59,FNJQJÿѭӧF[HPOjQKӳQJNLӃQWU~F WұSOӋQK FѫVӣ %rQFҥQKÿyFzQPӝWNLӃQWU~FWұSOӋQK FѫVӣQӳDOj RV32E ÿӏQK QJKƭD FKR QKӳQJ KӋ WKӕQJ QK~QJ RV32E FKӍ Fy 16 thanh ghi 32-bit registers và QKӳQJEӝÿӃPFӫD RV32I ÿѭӧFW\FKӑQFyKD\NK{QJ
2.1.3 KLӃQWU~FWұSOӋQK PӣUӝQJ
1KѭGDQKViFKFiFNLӃQWU~FWұSOӋQK FѫEҧQYjPӣUӝQJ FӫD5,6&-9ÿӅFұS ӣWUrQ, RISC-9ÿӏQKQJKƭDUҩWQKLӅXW\FKӑQWұSOӋQKPӣUӝQJ7URQJVӕÿy PӝWVӕÿmKRjQWKLӋQYӅÿһFWҧNƭWKXұWFzQOҥLYүQFzQÿDQJSKiWWULӇQ 'ѭӟL ÿk\OjQKӳQJPӣUӝQJÿm ÿyQJEăQJ YӅÿһFWҧ x M: tұp nhӳng lӋnh nhân chia sӕ nguyên x A: tұp nhӳng lӋnh nguyên tӱ Atomic x F: Single-precision floating point (tuân thӫ IEEE 754-2008) x D: Double-precision floating point (tuân thӫ IEEE 754-2008) x Q: Quad-precision floating point (tuân thӫ IEEE 754-2008) x C: tұp nhӳng lӋnh nén (16-bit) ÿӇ giҧPNtFKWKѭӟc cӫa mã lӋnh
Nhӳng tұp lӋnh mӣ rӝQJÿDQJÿѭӧc phát triӇn và sӁ ÿyQJEăQJÿһc tҧ trong WѭѫQJ ODL Jҫn là tұp L (decimal float), B (bit manipulation), J (dynamically translated languages), T (transactional memory), P (packed SIMD), V (vector operations), N (user-level interrupts)
Vi xӱ lý RI5CY
2.2.1 Giӟi thiӋu vi xӱ lý RI5CY
5,&L@trong hình 3.4 GѭӟLÿk\ WѭѫQJÿѭѫQJYӟLWtQ
41 KLӋXFDFKH KLWFӫDZD\>L@ &KLWLӃWKLӋQWKӵFFӫDNKӕL³+LWPLVVMXGJHPHQW´ ÿѭӧFWKӇKLӋQQKѭKuQKGѭӟLÿk\
Hình 3.4: Kh͙i Hit/miss judgement
7URQJWUѭӡQJKӧSFyFDFKHKLWӣPӝWZD\EҩWNuFzQJӑLOjZD\KLWWKu GӳOLӋXOӋQKÿmÿӑFWӯWUѭӟFVӁÿѭӧFWUҧYӅQJD\FKR&387URQJWUѭӡQJKӧS WӕFÿӝÿӑFOӋQKWӯFDFKHOjEҵQJYӟLWӕFÿӝOӋQKWӯEӝQKӟOӋQK65$0
7URQJWUѭӡQJKӧSNK{QJFyFDFKHKLWӣEҩWNuPӝWZD\QjRWKuFyNKҧQăQJ [ҧ\UD
- 1ӃXWuPÿѭӧFPӝWZD\ӣYӏWUtFyÿӏDFKӍQKѭWDJLQGH[ӣWUrQFKѭD YDOLGWKuFDFKHFRQWUROOHUVӁFKӑQZD\Qj\ÿӇFKXҭQEӏOѭXGӳOLӋXOӋQK PӟLVҳSÿѭӧFOҩ\YӅ
- 1ӃXӣYӏWUtFyÿӏDFKӍQKѭWDJLQGH[ӣWUrQPjWҩWFҧZD\ÿӅXYDOLGWKu OjWUѭӡQJKӧSZD\PLVV7URQJWUѭӡQJKӧSQj\FDFKHFRQWUROOHUVӁQKӡ NKӕL:58Y{KLӋXPӝWZD\ÿӇFKXҭQEӏOѭXGӳOLӋXOӋQKPӟLVҳSÿѭӧF Oҩ\YӅ
.KӕL:58 OjNKӕLFKӑQUDZD\EӏWKD\WKӃYjÿѭӧFKLӋQWKӵFEҵQJPӝWJLҧLWKXұWSVHXGRUDQGRPÿѫQJLҧQOj/)65/LQHDU)HHGEDFN6KLIW5HJLVWHU
42 +LӋQWKӵFSKҫQFӭQJFӫDJLҧLWKXұWQj\ÿѭӧFP{WҧQKѭKuQKYӁVDXÿk\
Hình 3.5: Kh͙i WRU hi n thc b̹ng LFSR 8 bit
6DXNKLÿmFKӑQÿѭӧc way bӏ thay thӃ, cache controller sӁ gӱi yêu cҫu ÿӑc lӋnh ra bus dӳ liӋu thông qua khӕi AXI IF Mһc dù AXI4 có rҩt nhiӅu tín hiӋXWX\QKLrQÿDVӕ chúng có giá trӏ cӕ ÿӏnh (trӯ tín hiӋXÿӏa chӍ axi_araddr) Chi tiӃt cӫa các tín hiӋu ra cӫa AXI sӁ ÿѭӧc khӕL$;,,)Qj\WtQKWRiQYjÿLӅu khiӇn Ngoài ra, nӃXQKѭOӋQKÿѭӧFÿӑc vӅ bҵng nhiӅu burst thì nhiӋm vө cӫa khӕi này còn là latch và merge dӳ liӋu lҥLÿӇ ÿҧm bҧo dӳ liӋu ghi vào cache và lӋnh trҧ vӅ CPU là chính xác ĈyOjIORZ chính cӫa khӕi cDFKHFRQWUROOHUYjFNJQJFKtQKOjIORZKRҥt ÿӝng cӫa bӝ cache này Tҩt cҧ ÿѭӧFÿLӅu khiӇn nhӏp nhàng bӣi máy trҥng thái CTRL FSM vӟLVѫÿӗ chuyӇn trҥQJWKiLÿѭӧc mô tҧ QKѭGѭӟLÿk\
43 Sau khi hӋ thӕQJÿѭӧc bұt nguӗn, thì máy trҥng thái (FSM) sӁ ÿѭӧc reset vӅ trҥQJWKiL³',6B,&$&+(´Ӣ trong trҥng thái này, bӝ cache lӋnh sӁ ÿѭӧc E\SDVV6DXNKL&38ÿѭӧc boot up bӣi Boot code thì sӁ FjLÿһWWKDQKJKLÿӇ enable cache lӋQK Qj\ OrQ KL ÿy )60 VӁ chuyӇn sang trҥng thái chӡ WAI_PD_TRANS Ӣ trҥng thái này, cache sӁ chӡ cho bҩt kì yêu cҫXÿӑc lӋnh WUѭӟFÿyÿѭӧc hoàn thành nhҵm tránh cho hӋ thӕng bӏ lӛi gây ra bӣi nhӳng WUDQVDFWLRQFKѭDÿѭӧc hoàn thành có thӇ ÿѭӧc bus dӳ liӋu gӱi vӅ kӃt quҧ bҩt cӭ O~FQjR6DXNKLÿm[iFÿӏnh không còn transaction nào ӣ trҥng thái chӡ, FSM chuyӇn sang trҥng thái FLUSH_ICACHE Ӣ trҥng thái này, toàn bӝ cache line cӫa bӝ cache sӁ ÿѭӧc vô hiӋu bҵng cách ghi 0 vào tҩt cҧ bit valid và dӳ liӋu tag Sau khi hoàn thành, FSM chuyӇn qua trҥng thái OPERATIVE là trҥng thái hoҥt ÿӝng chính cӫa bӝ cache Ӣ trҥng thái này, cache lӋnh sҹn sàng phөc vө nhu cҫXÿӑc lӋnh cӫa CPU NӃu cache miss xҧy ra, FSM sӁ chuyӇn qua 2 trҥng thái 5(4B5(),//Yj:$,7B5(),//B'21(ÿӇ ÿӑc lӋnh tӯ bӝ nhӟ ngoài và cұp nhұWYjRFDFKH.KL)60ÿDQJӣ trҥng WKiL23(5$7,9(QJѭӡi dùng có thӇ thông qua thiӃt lұSWKDQKJKLÿӇ tiӃn hành flush toàn bӝ cache WѭѫQJODLQrQKӛ trӧ thêm lӋnh flush cache ӣ mӝWÿӏa chӍ nhҩWÿӏnh) hoһc tiӃn hành disable cache này (chuyӇn vӅ trҥng thái bypass)
Khӕi con còn lҥi trong khӕi cache controller là khӕi PMF Stat, khӕi này có chӭFQăQJOjOѭXOҥi nhӳQJWK{QJWLQÿӇ debug hiӋu suҩt cӫa cache HiӋn tҥi khӕLQj\ÿmKӛ trӧ WK{QJWLQFѫEҧn là sӕ lҫQ&38ÿӑc lӋnh và sӕ lҫn cache miss xҧy ra Vӟi 2 thông tin này, có thӇ WtQKÿѭӧc tӍ lӋ miss rate cho cache 7URQJWѭѫQJODLQrQEә sung thêm mӝt sӕ thông tin khác, ví dө QKѭPLVVSHQDOW\ F\FOHV+uQKGѭӟLÿk\OjKLӋn thӵc phҫn cӭng cӫa khӕi này, bao gӗm 2 counter ÿӇ ÿӃm sӕ lҫQÿӑc lӋnh và sӕ lҫn cache miss:
3&KLWLӃWKLӋQWKӵFNKӕL$;,GRXEOHEXIIHU
KhӕL$;,EXIIHUQj\WKӵFFKҩWOjPӝW),)2GQJÿӇFkQEҵQJWLPLQJYuEXV GӳOLӋX$;,NK{QJKLӋQWKӵFVҹQ³UHJLVWHUVOLFH´'RÿyÿӇWUiQKPӝWÿѭӡQJ FULWLFDOWLPLQJWӯFDFKH[XӕQJEXVNƭWKXұWWKѭӡQJGQJOj$;,GRXEOHEXIIHU KӕL$;,EXIIHUFyWKӇFҩXKuQKOjVLQJOHEXIIHUKRһFE\SDVVW\YjRNӃWTXҧ WәQJKӧS.LӃQWU~FSKҫQFӭQJWәQJTXiWFӫDNKӕLQj\ÿѭӧFWKӇKLӋQQKѭKuQK GѭӟLÿk\
Hình 3.8: Kh͙i AXI Double Buffer y/ ;&/&Kǁ ĚĞƉƚŚсϮͿ valid_i data_i[N-1:0] ready_0 valid_o data_o[N-1:0] ready_i
3&KLWLӃWKLӋQWKӵFNKӕLPHPRU\DUUD\
Khӕi memory array là khӕi GQJÿӇ OѭXWRjQEӝ dӳ liӋu cӫa cache bao gӗm valid bit, tag và lӋQKĈӇ tӕLѭXYӅ tài nguyên, khӕi này dùng mӝt bӝ nhӟ SRAM ÿѫQFәng cho mӛi mӝt way Toàn bӝ dӳ liӋu valid bit, tag và lӋQKÿѭӧc gӝp và ÿѭӧFÿӑc ghi vào SRAM cùng mӝt lúc 6ѫÿӗ khӕi và chi tiӃt vӅ kӃt nӕi cӫa khӕL65$0Qj\ÿѭӧc mô tҧ QKѭKuQKVDX
Hình 3.9: B͡ nhͣ SRAM single port
3.1.4 ӃWTXҧKLӋQWKӵFEҵQJ6\VWHP9HULORJ
Sau khi hiӋn thӵc bӝ nhӟ ÿӋm bҵng ngôn ngӳ 6\VWHP9HULORJGѭӟLÿk\ là mӝt sӕ hình ҧnh hiӋn thӵc ӣ mӭc RTL
Hình 3.10 là hiӋn thӵFLQSXWRXWSXWSRUWFKR³WRSFDFKHPRGXOH´7URQJ ÿyKDLQKyPFәng giao tiӃp chính là vӟi CPU và vӟi bus dӳ liӋu
Hình 3.11 là hiӋn thӵFLQSXWRXWSXWSRUWFKR³FDFKHFRQWUROOHUPRGXOH´ Ngoài hai nhóm cәng giao tiӃp vӟi CPU và vӟi bus dӳ liӋu, cache controller có thêm giao tiӃp vӟi memory array
Hình 3.12 là schematic cӫa mӭc top cӫa cache Ӣ mӭFQj\Vѫÿӗ khӕi cӫDFDFKHÿѭӧc thӇ hiӋn, bao gӗm cache controller, 2 khӕi SRAM cӫa 2 way (valid bit, tag và dӳ liӋu lӋQK OѭX FKXQJ WURQJ FQJ Pӝt SRAM) và 2 khӕi double buffer cho 2 kênh AXI AR/R
CEB Tag_write_enb[i] WEB Tag_read_enb[i] clk_i
CLK {TAG_wdat, DATA_wdat}
Hình 3.10: C͝ng input/output cͯa cache top module
Hình 3.11: C͝ng input/output cͯa cache controller
Hình 3.12: Verdi schematic cͯa top cache module
&KѭѫQJ4 Mô phӓng, tәng hӧp và thӵc nghiӋm
4.1 Môi WUѭӡng mô phӓng
4*LӟLWKLӋXP{LWUѭӡQJP{SKӓQJ
.K{QJFKӍFKLDVҿWRjQEӝWKLӃWNӃSKҫQFӭQJFӫD0&83XOSLQRGӵiQ38/3 FzQFKLDVҿÿҫ\ÿӫWRjQEӝP{LWUѭӡQJÿӇFKҥ\P{SKӓQJYjNLӇPWKӱ0&8 0{LWUѭӡQJQj\FyQKӳQJÿһFÿLӇPYj\rXFҫXVDXÿk\
- 6ӱGөQJF{QJFөP{SKӓQJ0RGHO6LPFӫDKmQJ0HQWRU*UDSKLFV
- 7HVWEHQFKYjFiF9,3YLӃWEҵQJQJ{QQJӳ6\VWHP9HULORJ
- 9ӟLWUӑQJWkPOjNLӇPWKӱ&385,6&-9QJ{QQJӳ[k\GӵQJWHVWFDVH FKRP{LWUѭӡQJQj\OjQJ{QQJӳ&
- 6ӱGөQJWUuQKELrQGӏFK*&&(7+ÿѭӧFSKiWWULӇQEӣLQKyP38/3GӵD trên toolchain RISC-9SKiWWULӇQEӣLĈҥLKӑF%HUNHOH\
- +ӛWUӧÿҫ\ÿӫVҹQFiF9,3PRGHOVNӃWQӕLYӟLFiFFәQJQJRҥLYL
.LӃQWU~FFӫDP{LWUѭӡQJP{SKӓQJQj\ÿѭӧFWәFKӭFQKѭVDX
Hình 4.1: Ki͇QWU~FP{LWU˱ͥng mô ph͗ng cͯa Pulpino
Trong môi WUѭӡQJ Qj\ PӛL FәQJ JLDR WLӃS QKѭ 8$57 ,2C, SPI 0DVWHU6ODYHKD\$GY'HEXJ8QLWÿӅXÿѭӧFNӃWQӕLYӟLQKӳQJ9,3KD\PRGHO WѭѫQJӭQJÿѭӧFYLӃWEҵQJ6\VWHP9HULORJQKҵPJLҧOұSKRҥWÿӝQJFӫDQKӳQJ WKLӃWEӏQJRҥLYL ĈӇFKҥ\P{SKӓQJFiFӭQJGөQJWHVWFDVHVӁÿѭӧFYLӃWEҵQJ&YjÿѭӧF ELrQGӏFKWKjQKPmPi\6DXÿyPmPi\FQJYӟLGӳOLӋXVӁÿѭӧFSUHORDGYjR EӝQKӟOӋQKYjEӝQKӟGӳOLӋXEҵQJPӝWWURQJEDFiFK
ZD ĂƚĂ ZD ŽŽƚ ZD
SPI M VIP dƚŽƉ mem_preload()
- 6ӱGөQJWUӵFWLӃS69WDVNPHPBSUHORDGFӫDWHVWEHQFK7DVNQj\VӁ ÿӑFPmPi\YjGӳOLӋXWӯFiF file l2_stim.slm, tcdm_bank0.slm và back- GRRUJKLWUӵFWLӃSYjRKDLEӝQKӟ65$0
- 6ӱGөQJ63,0DVWHU9,3ÿӑFPmPi\YjGӳOLӋXWӯILOHspi_stim.txt thông TXDFәQJJLDRWLӃS63,VODYHIURQW-GRRUJKLYjRKDLEӝQKӟ65$0
- 6ӱGөQJ-7$*0RGHOWUX\FұSYjWKLӃWOұSKRҥWÿӝQJFKR&38&38VDX ÿyVӁÿӑF%RRWFRGHWӯ%RRW5$0YjWKӵFWKL3KҫQ%RRW/RDGHUWURQJ
%RRWFRGHVӁWKӵFKLӋQÿӑFWRjQEӝOӋQKYjGӳOLӋXӣWKLӃWEӏIODVKErQ QJRjLWK{QJTXDFәQJ63,0DVWHUJKLYjRKDLEӝQKӟ65$0 ĈӇNLӇPWUDNӃWTXҧP{SKӓQJWHVWEHQFKFNJQJVӱGөQJQKӳQJWKLӃWEӏQJRҥL YLQj\YtGөQKѭ
- &KѭѫQJWUuQKVӁWUX\ӅQPӝWFKXӛLNtWӵFyêQJKƭDUDErQQJRjLWK{QJ TXDFәQJ8$57
- +RһFFKѭѫQJWUuQKVӁWӵVRViQKNӃWTXҧYjJKLPӝWJLiWUӏÿӏQKWUѭӟFYjR EӝQKӟGӳOLӋXӢFXӕLFKѭѫQJWUuQKWHVWEHQFKVӱGөQJFәQJ63,ÿӇÿӑF JLiWUӏQj\UDYjVRViQKYӟLJLiWUӏÿӏQKWUѭӟFÿӇELӃWNӃWTXҧP{SKӓQJ Fyÿ~QJKD\NK{QJ
- +RһFFKѭѫQJWUuQKVӁÿLӅXNKLӇQQKӳQJFKkQ*3,2YjWHVWEHQFKFҫQ PRQLWRUQKӳQJFKkQQj\ÿӇNLӇPWUDNӃWTXҧP{SKӓQJ
Môi WUѭӡQJQj\ÿmFyVҹQKDLEӝWHVWFDVHPӝWÿӇNLӇPWUDWRjQEӝQKӳQJ FKӭFQăQJFѫEҧQYjPӝWÿӇÿiQKJLiKLӋXEӝVXҩWFӫD&385,&