{"id":730,"date":"2009-10-28T16:20:00","date_gmt":"2009-10-28T08:20:00","guid":{"rendered":"http:\/\/note.systw.net\/note\/?p=730"},"modified":"2023-11-04T16:30:34","modified_gmt":"2023-11-04T08:30:34","slug":"%e4%b8%ad%e6%96%b7%e7%b5%90%e6%a7%8b%e8%88%87%e4%b8%ad%e6%96%b7%e8%99%95%e7%90%86","status":"publish","type":"post","link":"https:\/\/systw.net\/note\/archives\/730","title":{"rendered":"\u4e2d\u65b7\u7d50\u69cb\u8207\u4e2d\u65b7\u8655\u7406"},"content":{"rendered":"\n<p>\u4e2d\u65b7\u7d50\u69cb<br>\u96fb\u5b50\u8a08\u7b97\u6a5f\u7684\u795e\u7d93\u7cfb\u7d71<br>\u767c\u751f\u4e8b\u4ef6\u6642,\u5247\u4f7f\u7528\u4e2d\u65b7\u4fe1\u865f\u901a\u77e5cpu,\u8981\u6c42\u8655\u7406<br>\u6703\u589e\u52a0CPU\u7684instruction cycle\u5728\u8a2d\u8a08\u4e0a\u7684\u8907\u96dc\u5ea6<br>\u53ef\u907f\u514d\u8f2a\u6d41\u8a62\u554f,\u800c\u63d0\u6607\u7cfb\u7d71\u7684\u6548\u80fd<br>ps:\u8f2a\u6d41\u8a62\u554f:\u5b9a\u671f\u5730\u5c0d\u6240\u6709\u786c\u9ad4\u5143\u4ef6\u8207\u9031\u908a\u8a2d\u5099\u9032\u884c\u72c0\u614b\u7684\u6aa2\u67e5,\u6548\u80fd\u8f03\u5dee,\u65e9\u671f\u96fb\u7b97\u6a5f\u4f7f\u7528<br><br>\u4e2d\u65b7\u4fe1\u865f<br>\u7531\u786c\u9ad4\u5143\u4ef6\u6216\u662f\u9031\u908a\u8a2d\u5099\u767c\u51fa,\u50b3\u9001\u7d66\u4e2d\u592e\u8655\u7406\u5668\u7684\u4e00\u7a2e\u63a7\u5236\u4fe1\u865f<br>\u4fe1\u865f\u96a8\u6642\u53ef\u5230\u9054,\u4f46cpu\u6703\u7b49\u4e00\u500b\u6307\u4ee4\u5b8c\u6574\u57f7\u884c\u7d50\u675f\u5f8c\u624d\u8655\u7406<br>\u6703\u6539\u8b8acpu\u57f7\u884c\u6307\u4ee4\u6642\u7684\u6b63\u5e38\u6d41\u7a0b<br>\u4e3b\u8981\u6982\u5ff5\u662fevent-driven(\u4e8b\u4ef6\u9a45\u52d5)<br>\u61c9\u7528\u6709:<br>&nbsp;\u8f38\u5165\/\u8f38\u51fa\u904b\u4f5c\u7684\u5354\u8abf<br>&nbsp;\u5373\u6642\u7cfb\u7d71\u7684\u8a2d\u8a08<br>&nbsp;\u4f5c\u696d\u7cfb\u7d71\u7684\u8a2d\u8a08<br>&nbsp;\u7269\u4ef6\u5c0e\u5411\u7a0b\u5f0f\u7684\u8a2d\u8a08<br>ps:event-driven\u662f\u6307\u6709\u4e8b\u4ef6\u767c\u751f\u624d\u9700\u8655\u7406,\u82e5\u7121\u4e8b\u4ef6\u767c\u751f\u5247\u4e0d\u9700\u6d6a\u8cbb\u6642\u9593<\/p>\n\n\n\n<p>\u4e2d\u65b7\u4fe1\u865f\u4f9d\u57f7\u884c\u7a0b\u5f0f\u53ef\u5206\u70ba:<br><strong>&nbsp;asynchronous interrupt<\/strong>(\u975e\u540c\u6b65\u4e2d\u65b7):\u4e5f\u7a31\u5916\u90e8\u4e2d\u65b7<br>\u3000\u8207\u6b63\u5728\u57f7\u884c\u7684\u7a0b\u5f0f\u7121\u95dc\u7684\u4fe1\u865f,cpu\u4e0d\u77e5\u4f55\u6642\u6703\u6536\u5230\u4e2d\u65b7\u4fe1\u865f<br>&nbsp;&nbsp;&nbsp;ex:\u8f38\u5165\u8f38\u51fa\u904b\u4f5c\u7d50\u675f\u6240\u7522\u7684\u4e2d\u65b7\u4fe1\u865f<br><strong>&nbsp;synchronous interrupt<\/strong>(\u540c\u6b65\u4e2d\u65b7):\u4e5f\u7a31\u5167\u90e8\u4e2d\u65b7<br>\u3000\u57f7\u884c\u7a0b\u5f0f\u6240\u7522\u751f\u7684\u4fe1\u865f<br>&nbsp;&nbsp;&nbsp;ex:\u57f7\u884c\u4e0d\u5408\u6cd5\u7684\u6307\u4ee4\u6240\u7522\u751f\u7684\u4e2d\u65b7\u4fe1\u865f<\/p>\n\n\n\n<p>\u4f9dIBM360\/370\u7684\u4e2d\u65b7\u4fe1\u865f\u53ef\u5206\u70ba:<br>&nbsp;&nbsp;<strong>SVC(supervisor call interrupt,\u7cfb\u7d71\u547c\u53eb\u4e2d\u65b7):<\/strong>\u5c6c\u540c\u6b65\u4e2d\u65b7<br>&nbsp;&nbsp;&nbsp; \u53ef\u8b93cpu\u5207\u63db\u5230\u7279\u6b0a\u6a21\u5f0f,\u4e26\u57f7\u884c\u7279\u6b0a\u6307\u4ee4,ex:\u7a0b\u5f0f\u57f7\u884c\u7cfb\u7d71system call(\u547c\u53eb\u6307\u4ee4)<br>&nbsp;&nbsp;<strong>program check interrupt(\u7a0b\u5f0f\u6aa2\u67e5\u4e2d\u65b7):<\/strong>\u4e5f\u7a31traps,\u5c6c\u540c\u6b65\u4e2d\u65b7<br>&nbsp;&nbsp;&nbsp; \u7a0b\u5f0f\u57f7\u884c\u4e2d\u56e0\u7570\u5e38\u800c\u7522\u751f\u7684exceptions(\u7570\u5e38\u4fe1\u865f),\u53ef\u8b93cpu\u66ab\u6642\u505c\u6b62\u7a0b\u5f0f\u7684\u57f7\u884c&nbsp;ex:\u6ea2\u4f4d,\u9664\u6578\u70ba\u96f6,\u4e0d\u5408\u6cd5\u904b\u7b97<br>&nbsp;&nbsp;<strong>i\/o interrupt(\u8f38\u5165\/\u8f38\u51fa\u4e2d\u65b7):<\/strong>\u5c6c\u975e\u540c\u6b65\u4e2d\u65b7<br>&nbsp;&nbsp;&nbsp; \u8f38\u5165\u8f38\u51fa\u904e\u7a0b\u9806\u5229\u7d50\u675f\u6216\u767c\u751f\u7570\u5e38\u6240\u7522\u751f\u7684\u4e2d\u65b7\u4fe1\u865f<br>&nbsp;&nbsp;<strong>machine check interrupt(\u6a5f\u5668\u6aa2\u67e5\u4e2d\u65b7):<\/strong>\u5c6c\u975e\u540c\u6b65\u4e2d\u65b7<br>&nbsp;&nbsp;&nbsp;&nbsp;\u786c\u9ad4\u5143\u4ef6\u672c\u8eab\u529f\u80fd\u7570\u5e38,\u6240\u7522\u7684\u4e2d\u65b7\u4fe1\u865f&nbsp;&nbsp;<br>&nbsp;&nbsp;<strong>external interrupt(\u5916\u90e8\u4e2d\u65b7):<\/strong>\u5c6c\u975e\u540c\u6b65\u4e2d\u65b7<br>&nbsp;&nbsp;&nbsp; \u96fb\u7b97\u6a5f\u7cfb\u7d71\u5916\u90e8\u56e0\u4e0d\u540c\u4e8b\u4ef6\u7684\u767c\u751f,\u6240\u7522\u751f\u7684\u4e2d\u65b7\u4fe1\u865f&nbsp;ex:\u4e00\u500breset\u4fe1\u865f<br>ps:\u591a\u7a2e\u4e2d\u65b7\u985e\u578b\u53ef\u5206\u914d\u4e0d\u540c\u7b49\u7d1a\u7684\u512a\u5148\u6b0a\u7d66\u5404\u4e2d\u65b7\u985e\u578b,\u7576\u591a\u500b\u4e2d\u65b7\u4fe1\u865f\u540c\u6642\u767c\u751f\u6642,\u53ef\u6839\u64da\u512a\u5148\u6b0a\u9ad8\u4f4e\u4f9d\u5e8f\u8655\u7406<\/p>\n\n\n\n<p>\u4f9d\u8edf\u786c\u9ad4\u4e2d\u65b7\u5206\uff1a<br><strong>software interrupt(\u8edf\u9ad4\u4e2d\u65b7)<\/strong>\uff1a\u76ee\u524d\u6b63\u57f7\u884c\u7684\u7a0b\u5f0f\u57f7\u884csystem call\u6216\u6307\u4ee4\u6709exceptions\u5f15\u8d77<br>\u3000\u8655\u7406\u65b9\u5f0f\uff1a\u5ffd\u8996\u4e0d\u8655\u7406\u6216\u76f4\u63a5\u7d50\u675f\u8a72\u8edf\u9ad4\u57f7\u884c<br><strong>hardware interrupt(\u786c\u9ad4\u4e2d\u65b7)<\/strong>\uff1a\u7531\u786c\u9ad4\u5143\u4ef6\u900f\u904e\u4e2d\u65b7\u8981\u6c42\u63a7\u5236\u7dda\u5230cpu\uff0c\u901a\u77e5\u786c\u9ad4\u4e2d\u65b7\u767c\u751f<br>\u3000\u8655\u7406\u65b9\u5f0f\uff1a\u6839\u64da\u512a\u5148\u6b0a\u6c7a\u5b9a\u662f\u5426\u99ac\u4e0a\u8655\u7406\u6216\u7a0d\u5f8c\u8655\u7406<\/p>\n\n\n\n<p>ps:cpu\u57f7\u884c\u6a21\u5f0f\u5206\u70ba:<br>user mode(\u4e00\u822c\u6a21\u5f0f):\u61c9\u7528\u7a0b\u5f0f\u7684\u57f7\u884c\u74b0\u5883,\u53ef\u57f7\u884c\u4e00\u822c\u6307\u4ee4<br>supervisor\/system mode(\u7279\u6b0a\u6a21\u5f0f):\u4f5c\u696d\u7cfb\u7d71\u7684\u57f7\u884c\u74b0\u5883,\u53ef\u57f7\u884c\u4e00\u822c\u6307\u4ee4\u548c\u7279\u6b0a\u6307\u4ee4<br>ps:\u6a5f\u5668\u6307\u4ee4\u5206\u70ba\u4e00\u822c\u6307\u4ee4\u8207\u7279\u6b0a\u6307\u4ee4<\/p>\n\n\n\n<p>ps:system call(\u7cfb\u7d71\u547c\u53eb)<br>\u5728user mode\u4e0b\u5229\u7528system call\u900f\u904e\u4f5c\u696d\u7cfb\u7d71\u5354\u52a9\u53ef\u57f7\u884c\u7279\u6b0a\u6307\u4ee4<br>ex:\u8981\u6c42\u4e3b\u8a18\u61b6\u55ae\u5143\u7684\u7a7a\u9593\u914d\u7f6e,\u8981\u6c42\u5b58\u53d6\u8f14\u52a9\u8a18\u61b6\u9ad4\u7684\u6a94\u6848\u8cc7\u6599<br>\u904b\u4f5c\u904e\u7a0b<br>1\u6703\u5c07\u539f\u5148\u57f7\u884c\u7684\u61c9\u7528\u7a0b\u5f0f\u7684\u57f7\u884c\u72c0\u614b\u5132\u5b58<br>2\u6839\u64dasystem call\u7a2e\u985e\u6c7a\u5b9a\u9700\u8981\u7684\u7cfb\u7d71\u670d\u52d9\u526f\u7a0b\u5f0f<br>3\u7d50\u675f\u5f8c\u5728\u6062\u5fa9\u539f\u61c9\u7528\u7a0b\u5f0f\u7684\u57f7\u884c\u72c0\u614b,\u5c07\u63a7\u5236\u4ea4\u56de\u7d66\u61c9\u7528\u7a0b\u5f0f\u7e7c\u7e8c\u5f80\u4e0b\u57f7\u884c<\/p>\n\n\n\n<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<\/p>\n\n\n\n<p>\u8655\u7406\u4e2d\u65b7\u4fe1\u865f\u6b65\u9a5f<br><strong>\u5224\u65b7\u90e8\u4efd<br><\/strong>CPU\u5c07\u6b63\u5728\u57f7\u884c\u7684\u6307\u4ee4\u6b63\u5e38\u5730\u7d50\u675f,\u6aa2\u67e5\u4e2d\u65b7\u4fe1\u865f\u662f\u5426\u767c\u751f<br>if(\u767c\u751f\u4e2d\u65b7\u4fe1\u865f){<br>&nbsp; if(\u4fe1\u865f\u6c92\u88ab\u7981\u6b62){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(\u4fe1\u865f\u512a\u5148\u6b0a&gt;\u7a0b\u5f0f\u512a\u5148\u6b0a){\u958b\u59cb\u4fe1\u865f\u8655\u7406}else{\u7e7c\u7e8c\u57f7\u884c\u7a0b\u5f0f\u4ee5\u5f8c\u5728\u8655\u7406\u6b64\u4fe1\u865f}<br>&nbsp; }<br>}<br><strong>\u4fe1\u865f\u8655\u7406\u90e8\u4efd<\/strong><br><strong>1\u5132\u5b58\u76ee\u524d\u7a0b\u5f0f\u72c0\u614b<br><\/strong>&nbsp;cpu\u66ab\u505c\u76ee\u524d\u7a0b\u5f0f\u7684\u57f7\u884c,<br>&nbsp;\u4e26\u5f9e\u4e00\u822c\u6a21\u5f0f\u5207\u63db\u5230\u7279\u6b0a\u6a21\u5f0f,\u518d\u628a\u63a7\u5236\u6b0a\u4ea4\u7d66\u4f5c\u696d\u7cfb\u7d71,<br>&nbsp;\u4f5c\u696d\u7cfb\u7d71\u628a\u7a0b\u5f0f\u57f7\u884c\u72c0\u614b\u5132\u5b58\u5230\u5806\u758a,\u4ee5\u4fbf\u8655\u7406\u5b8c\u4fe1\u865f\u5f8c\u53ef\u6062\u5fa9\u539f\u5148\u57f7\u884c\u72c0\u614b<br>&nbsp;ps:\u57f7\u884c\u72c0\u614b\u4e3b\u8981\u5305\u62ecPC(program counter\u7a0b\u5f0f\u8a08\u6578\u5668)\u548cstatus register(\u72c0\u614b\u66ab\u5b58\u5668)<br><strong>2ISR\u8655\u7406\u4e2d\u65b7\u4fe1\u865f<\/strong><br>&nbsp; \u4f5c\u696d\u7cfb\u7d71\u4f9d\u4e2d\u65b7\u4fe1\u865f\u7a2e\u985e,\u5c07\u5c0d\u61c9\u7684ISR\u7684\u8d77\u59cb\u4f4d\u5740\u653e\u5165program counter\u4e2d,\u547c\u53eb\u5c0d\u61c9\u7684ISR<br>&nbsp; cpu\u958b\u59cb\u57f7\u884c\u4e00\u500bISR\u9032\u884c\u4e2d\u65b7\u4fe1\u865f\u7684\u8655\u7406<br><strong>3\u56de\u5fa9\u4e4b\u524d\u7a0b\u5f0f\u72c0\u614b<br><\/strong>&nbsp; \u4e2d\u65b7\u670d\u52d9\u5e38\u5f0f\u57f7\u884c\u7d50\u675f\u5f8c,\u63a7\u5236\u6b0a\u9084\u7d66\u4f5c\u696d\u7cfb\u7d71<br>&nbsp; \u4f5c\u696d\u7cfb\u7d71\u518d\u7531\u5806\u758a\u53d6\u51faPC\u548cstatus register\u7684\u5167\u5bb9,\u6062\u5fa9\u539f\u5148\u7a0b\u5f0f\u7684\u57f7\u884c\u72c0\u614b<br>&nbsp; cpu\u66ab\u505c\u4f5c\u696d\u7cfb\u7d71\u7684\u57f7\u884c,\u4e26\u5f9e\u7279\u6b0a\u6a21\u5f0f\u5207\u63db\u5230\u4e00\u822c\u6a21\u5f0f<br>&nbsp; \u63a7\u5236\u6b0a\u4ea4\u9084\u7d66\u539f\u5148\u7684\u7a0b\u5f0f,cpu\u6062\u5fa9\u5148\u524d\u7a0b\u5f0f\u7684\u57f7\u884c<br>ps:program check interrupt\u7570\u5e38\u4fe1\u865f\u6703\u7d50\u675f\u76ee\u524d\u7a0b\u5f0f\u7684\u57f7\u884c,\u8655\u7406\u65b9\u5f0f\u548c\u6b64\u4e0d\u540c<\/p>\n\n\n\n<p><strong>ISR(interrupt service routine\u4e2d\u65b7\u670d\u52d9\u5e38\u5f0f)<br><\/strong>\u6bcf\u4e00\u7a2e\u4e2d\u65b7\u4fe1\u865f\u9700\u8981\u4e00\u500b\u5c0d\u61c9\u7684ISR\u52a0\u4ee5\u8655\u7406<br>\u4f5c\u696d\u7cfb\u7d71\u63d0\u4f9b\u7684\u7cfb\u7d71\u7a0b\u5f0f,\u53ea\u53ef\u5728\u7279\u6b0a\u6a21\u5f0f\u4e0b\u57f7\u884c<br>\u4f7f\u7528\u6642\u9700context switching\u5c07\u4e00\u822c\u6a21\u5f0f\u5207\u63db\u6210\u7279\u6b0a\u6a21\u5f0f<br>\u8207subroutine(\u526f\u7a0b\u5f0f)\u985e\u4f3c<br>ps:subroutine\u548cprocedure\u5c6c\u61c9\u7528\u7a0b\u5f0f,\u9808\u5728\u4e00\u822c\u6a21\u5f0f\u4e0b\u57f7\u884c<\/p>\n\n\n\n<p><strong>context switching(\u74b0\u5883\u5207\u63db)<\/strong>:\u5169\u500b\u7a0b\u5f0f\u9593\u57f7\u884c\u72c0\u614b\u7684\u4ea4\u63db<br>\u8aaa\u660e:\u8655\u7406\u4e2d\u65b7\u4fe1\u865f\u6642,\u4f5c\u696d\u7cfb\u7d71\u628a\u76ee\u524d\u7a0b\u5f0f\u72c0\u614b\u5132\u5b58\u8d77\u4f86\u518d\u8f09\u5165\u5c0d\u61c9\u7684\u4e2d\u65b7\u670d\u52d9\u5e38\u5f0f\u7684\u57f7\u884c\u72c0\u614b<br>\u56e0\u6b21\u6578\u983b\u7e41,\u6240\u4ee5\u5c0d\u6574\u9ad4\u7cfb\u7d71\u7684\u6548\u80fd\u5f71\u97ff\u6975\u5927<br>\u4f7f\u7528PSW(program status word,\u7a0b\u5f0f\u72c0\u614b\u5b57\u7d44)\u7684\u66ab\u5b58\u5668\u5132\u5b58\u76ee\u524d\u7a0b\u5f0f\u7684\u72c0\u614b<\/p>\n\n\n\n<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<\/p>\n\n\n\n<p>\u4e2d\u65b7\u7684\u512a\u5148\u6b0a<br>\u9700\u8981priority arbiter(\u512a\u5148\u6b0a\u4ef2\u88c1\u5668),\u4ee5\u53cainterrupt request(\u4e2d\u65b7\u8981\u6c42\u7dda)\u8207interrupt grant(\u4e2d\u65b7\u540c\u610f\u7dda)<br>interrupt request:\u7576\u6709\u4e8b\u4ef6\u767c\u751f\u6642\u7528\u4f86\u50b3\u9001\u4e2d\u65b7\u4fe1\u865f\u7d66priority arbiter<br>interrupt grant:priority arbiter\u6c7a\u5b9a\u597d\u67d0\u786c\u9ad4\u5f8c,\u7528\u4f86\u50b3\u9001\u4e2d\u65b7\u540c\u610f\u4fe1\u865f\u7d66\u8a72\u786c\u9ad4<br>\u904b\u4f5c\u904e\u7a0b<br>1\u6709\u4e8b\u4ef6\u767c\u751f\u6642\u6703\u900f\u904einterrupt request\u5411priority arbiter\u767c\u51fa\u4e2d\u65b7\u4fe1\u865f,\u4e26\u9032\u5165\u7b49\u5f85\u72c0\u614b<br>2priority arbiter\u6536\u5230\u4e00\u500b\u6216\u591a\u500b\u4e2d\u65b7\u4fe1\u865f\u5f8c,\u4f7f\u7528priority arbiter\u96fb\u8def\u6c7a\u5b9a\u6700\u9ad8\u512a\u5148\u6b0a\u7684\u786c\u9ad4<br>3priority arbiter\u50b3\u9001\u4e2d\u65b7\u540c\u610f\u4fe1\u865f\u7d66\u6700\u9ad8\u512a\u5148\u6b0a\u7684\u786c\u9ad4,\u4e26\u6e05\u9664interrupt request\u4e0a\u7684\u4e2d\u65b7\u4fe1\u865f<\/p>\n\n\n\n<p>priority arbiter\u96fb\u8def\u7684\u88fd\u4f5c\u6709<br><strong>daisy chain(\u96db\u83ca\u93c8):<\/strong>\u5177static priority<br>&nbsp; \u4e2d\u65b7\u7d50\u69cb\u53ea\u6709\u4e00\u7d44interrupt request\u8207interupt grant\u548c\u5468\u908a\u53ca\u786c\u9ad4\u76f8\u9023\u6210\u93c8\u7d50\u4e32\u5217<br>&nbsp; \u4e2d\u65b7\u540c\u610f\u4fe1\u865f\u6703\u4f9d\u5e8f\u9010\u4e00\u50b3\u4e0b\u53bb,\u800c\u8d8a\u63a5\u8fd1cpu\u7684\u8a2d\u5099\u512a\u5148\u6b0a\u8d8a\u9ad8<br>&nbsp; \u512a\u9ede\u662f\u96fb\u8def\u7c21\u55ae,\u7f3a\u9ede\u662f\u8f03\u4f4e\u512a\u5148\u6b0a\u8a2d\u5099\u53ef\u80fd\u8981\u7b49\u5f88\u4e45\u751a\u81f3\u7121\u9650\u5ef6\u9072<br><strong>rotatin daisy chain(\u65cb\u8f49\u5f0f\u96db\u83ca\u93c8)<\/strong><strong>:<\/strong>\u5177dynamic priority<br>&nbsp; \u628adaisy chain\u7684\u93c8\u7d50\u4e32\u5217\u6539\u70bacircular list(\u74b0\u72c0\u4e32\u5217)<br>&nbsp; \u4e2d\u65b7\u540c\u610f\u4fe1\u865f\u6703\u4f9d\u8a2d\u5099\u8f2a\u6d41\u9001\u51fa,\u512a\u5148\u6b0a\u5faa\u74b0\u8b8a\u52d5,\u53ef\u907f\u514d\u7121\u9650\u5ef6\u9072<br>&nbsp;&nbsp;ex:4\u500b\u8a2d\u5099,interrupt request\u5206\u5225\u662f0req,1req,2req,3req,\u82e5\u4e0a\u6b211req\u88ab\u63a5\u53d7\u5247\u76ee\u524d2req\u512a\u5148\u6b0a\u6700\u9ad8<br><strong>\u8f2a\u8a62\u6cd5<\/strong>:\u5177dynmaic priority<br>&nbsp; \u4e2d\u65b7\u7d50\u69cb\u53ea\u6709\u4e00\u689dinterrupt request\u548c\u591a\u7d44interrupt grant<br>&nbsp; \u4f9d\u5404\u786c\u9ad4\u88abpriority arbiter\u8a62\u554f\u7684\u9806\u5e8f,\u4f86\u6c7a\u5b9a\u786c\u9ad4\u7684\u512a\u5148\u6b0a<br>&nbsp; \u512a\u9ede\u662f\u53ef\u7528\u7a0b\u5f0f\u898f\u5283\u7684\u65b9\u5f0f\u63d0\u4f9bdynmaic priority,\u7f3a\u9ede\u662f\u9010\u4e00\u8a62\u554f\u5404\u786c\u9ad4\u6548\u7387\u5dee<br><strong>\u7368\u7acb\u7684\u8981\u6c42\u7dda\u8207\u540c\u610f\u7dda<\/strong><br>&nbsp; \u4e2d\u65b7\u7d50\u69cb\u662f\u6bcf\u500b\u6703\u767c\u51fa\u4e2d\u65b7\u4fe1\u865f\u7684\u786c\u9ad4\u6709\u4e00\u7d44interrupt request\u548cinterrupt grant<br>&nbsp; \u82e5\u88fd\u6210static priority\u5247\u5404\u8a2d\u5099\u90fd\u6709\u56fa\u5b9a\u7684\u512a\u5148\u6b0a<br>&nbsp; \u82e5\u88fd\u6210dynamic priority\u5247\u9700\u8981\u6539\u6210\u50cfrotatin daisy chain<br>&nbsp; \u512a\u9ede\u662f\u6548\u7387\u597d,\u7f3a\u9ede\u662f\u96fb\u8def\u8907\u96dc\u6210\u672c\u9ad8<br><strong>\u6298\u8877\u6cd5<\/strong><br>&nbsp; \u4e2d\u65b7\u7d50\u69cb\u662f2\u7d44\u4ee5\u4e0a\u7684interrupt request\u548cinterrupt grant,\u6bcf\u4e00\u7d44\u5728\u548c\u5468\u908a\u53ca\u786c\u9ad4\u76f8\u9023\u6210\u93c8\u7d50\u4e32\u5217<br>&nbsp; \u7531daisy chain\u548c\u7368\u7acb\u7684\u8981\u6c42\u7dda\u8207\u540c\u610f\u7dda\u5169\u7a2e\u4f5c\u6cd5\u7684\u6df7\u5408<br>&nbsp; \u512a\u9ede\u662f\u6548\u80fd\u6bd4daisy chain\u597d,\u6210\u672c\u6bd4\u7368\u7acb\u7684\u8981\u6c42\u7dda\u8207\u540c\u610f\u7dda\u4f4e,\u4e14\u8f03\u5177\u5f48\u6027<br>&nbsp; \u5927\u90e8\u4efd\u96fb\u7b97\u6a5f\u63a1\u7528\u6b64\u65b9\u5f0f<\/p>\n\n\n\n<p>static priority(\u975c\u614b\u512a\u5148\u6b0a):\u8b93\u5404interrupt require\u6709\u56fa\u5b9a\u7684\u512a\u5148\u6b0a,\u96fb\u8def\u88fd\u4f5c\u6613,\u53ef\u80fd\u7522\u751f\u7121\u9650\u5ef6\u9072\u554f\u984c<br>dynamic priority(\u52d5\u614b\u512a\u5148\u6b0a):\u8b93\u5404interrupt require\u8f2a\u6d41\u6700\u9ad8\u7684\u512a\u5148\u6b0a,\u96fb\u8def\u88fd\u4f5c\u96e3,\u53ef\u907f\u514d\u7121\u9650\u5ef6\u9072\u554f\u984c<\/p>\n\n\n\n<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<\/p>\n\n\n\n<p>\u4e2d\u65b7\u4fe1\u865f\u8fa6\u8a8d<br>ps:\u82e5\u7528\u7368\u7acb\u7684\u8981\u6c42\u7dda\u8207\u540c\u610f\u7dda\u88fd\u4f5cpriority arbiter,\u5247\u4e0d\u7528\u8fa6\u8a8d<br>\u4e00\u822c\u8a2d\u8a08\u7684\u8fa6\u8a8d\u65b9\u6cd5\u6709:<br><strong>\u8f2a\u8a62\u6cd5<\/strong><br>&nbsp; 1\u786c\u9ad4\u767c\u51fa\u4e2d\u65b7\u4fe1\u865f\u6642\u9808\u8a2d\u5b9a\u4e2d\u65b7\u8981\u6c42\u4f4d\u5143,<br>&nbsp; 2cpu\u57f7\u884cisr\u8f2a\u6d41\u6e2c\u8a66\u6bcf\u500b\u786c\u9ad4\u7684\u4e2d\u65b7\u8981\u6c42\u4f4d\u5143\u4ee5\u8fa6\u8a8d\u4f55\u786c\u9ad4\u767c\u51fa<br>&nbsp; 3cpu\u8fa8\u8a8d\u5b8c\u5f8c\u7d66\u8a72\u786c\u9ad4\u4e2d\u65b7\u540c\u610f\u4fe1\u865f<br>&nbsp; 4\u8a72\u786c\u9ad4\u628a\u4e2d\u65b7\u540c\u610f\u4fe1\u865f\u79fb\u8d70\u4e26\u6e05\u9664\u4e2d\u65b7\u8981\u6c42\u4f4d\u5143<br>&nbsp; \u512a\u9ede\u662f\u96fb\u8def\u7c21\u55ae\u5bb9\u6613\u88fd\u4f5c,\u7f3a\u9ede\u662f\u9700\u9010\u4e00\u6e2c\u8a66\u6548\u7387\u5dee<br><strong>vectored interrupt(\u5411\u91cf\u4e2d\u65b7\u6cd5)<\/strong><br>&nbsp; 1\u786c\u9ad4\u6536\u5230\u4e2d\u65b7\u540c\u610f\u4fe1\u865f\u5f8c\u5728\u9001\u51fainterrupt vector(\u4e2d\u65b7\u5411\u91cf)\u7d66cpu<br>&nbsp; 2cpu\u5230interrupt vector table(\u4e2d\u65b7\u5411\u91cf\u8868)\u88ab\u6307\u5b9a\u7684\u6b04\u4f4d\u53d6\u51faisr\u8d77\u59cb\u4f4d\u5740\u4e26\u57f7\u884c\u6307\u5b9aisr<br>&nbsp; \u662f\u9019\u500b\u4e2d\u65b7\u4fe1\u865f\u5c0d\u61c9\u7684isr\u7684\u8d77\u59cb\u4f4d\u5740\u6216\u662f\u9593\u63a5\u4f4d\u7f6e<br>&nbsp; \u6b64\u65b9\u6cd5\u9700\u52a0\u5165\u8cc7\u6599\u7dda\u50b3\u905einterrupt vector<br>&nbsp; \u512a\u9ede\u662f\u6548\u7387\u4f73<br><strong>\u6298\u8877\u6cd5<\/strong><br>&nbsp; \u7d66\u5404\u4e2d\u65b7\u8981\u6c42\u7dda\u4e00\u500b\u8fa8\u8a8d\u78bc,\u7576cpu\u6536\u5230\u8fa8\u8a8d\u78bc\u5f8c\u5728\u7528\u8f2a\u8a62\u6cd5\u8fa8\u8a8d\u4e2d\u65b7\u4fe1\u865f\u662f\u4f55\u786c\u9ad4\u767c\u51fa<br>&nbsp; \u7528\u5728priority arbiter\u96fb\u8def\u88fd\u4f5c\u70ba\u6298\u8877\u6cd5\u4e0b<\/p>\n\n\n\n<p>&nbsp;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<\/p>\n\n\n\n<p>interrupt disable(\u4e2d\u65b7\u7684\u7981\u6b62)<br>\u66ab\u6642\u5ffd\u7565interrupt\u7684\u7522\u751f\u7684\u529f\u80fd,\u8b93\u5177\u4e0d\u53ef\u5207\u5272\u6027\u8cea\u7684\u5de5\u4f5c\u4e0d\u88ab\u4e2d\u65b7,\u907f\u514d\u9020\u6210\u932f\u8aa4\u7684\u7d50\u679c<br>ps:\u4e0d\u53ef\u5207\u5272\u6027\u8cea\u6307\u7684\u662f\u7a0b\u5f0f\u7684\u57f7\u884c\u9806\u5e8f\u9808\u56fa\u5b9a,\u4e00\u4f46\u6539\u8b8a\u53ef\u80fd\u6703\u9020\u6210\u932f\u8aa4<br>enable interrupt(\u4e2d\u65b7\u63a5\u53d7)<br>\u8b93cpu\u6062\u5fa9\u63a5\u53d7\u4e2d\u65b7\u4fe1\u865f<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e2d\u65b7\u7d50\u69cb\u96fb\u5b50\u8a08\u7b97\u6a5f\u7684\u795e\u7d93\u7cfb\u7d71\u767c\u751f\u4e8b\u4ef6\u6642,\u5247\u4f7f\u7528\u4e2d\u65b7\u4fe1\u865f\u901a\u77e5c &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[23],"tags":[],"class_list":["post-730","post","type-post","status-publish","format-standard","hentry","category-computerarchitecture"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts\/730","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/comments?post=730"}],"version-history":[{"count":0,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts\/730\/revisions"}],"wp:attachment":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/media?parent=730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/categories?post=730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/tags?post=730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}