国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      嵌入式Java處理器微碼指令集動態(tài)裝載方法

      文檔序號:6469219閱讀:180來源:國知局
      專利名稱:嵌入式Java處理器微碼指令集動態(tài)裝載方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于嵌入式處理器設(shè)計領(lǐng)域,具體來說,涉及一種Java處理 器微碼指令集動態(tài)裝載技術(shù)。
      背景技術(shù)
      現(xiàn)有的Java處理器或Java協(xié)處理器將本地指令集固化在芯片之中, 無法對指令集進行優(yōu)化。對于通用處理器,如PC中的處理器,此種方法 可以滿足應(yīng)用需求,因為基于通用處理器的上層應(yīng)用,是由功能十分完 善的操作系統(tǒng)支持。而Java處理器常被應(yīng)用于嵌入式系統(tǒng)中,考慮到運 行速度和系統(tǒng)成本,與其對應(yīng)的操作系統(tǒng)或控制功能相對簡單,且針對 不同的應(yīng)用場合需要作相應(yīng)的調(diào)整。
      操作系統(tǒng)執(zhí)行程序的過程直接映射到系統(tǒng)底層的本地指令集執(zhí)行的 過程。當前的Java處理器或Java協(xié)處理器已將本地指令集固化到芯片之 中,無法針對不同的嵌入式應(yīng)用環(huán)境進行指令優(yōu)化,也無法開發(fā)針對不 同環(huán)境的、用戶定制的指令段,將其添加到系統(tǒng)當中。嵌入式系統(tǒng)的實 時、可靠、便攜等要求受到了限制。
      現(xiàn)有的一些"動態(tài)裝載"解決方案都是基于FPGA技術(shù)的,因其硬 件的可配置性可以滿足Java處理機制的重構(gòu)。不過這些解決方案都必須 通過HDL代碼的更改,對FPGA進行重新編程才可以實現(xiàn),不是真正意
      義上的動態(tài)裝載。且FPGA的成本和性能,與專用處理器相比,也不適 合作為批量生產(chǎn)的產(chǎn)品使用到嵌入式系統(tǒng)當中,只能作為研發(fā)過程中的 驗證平臺。

      發(fā)明內(nèi)容
      針對以上的不足,本發(fā)明提出了一種嵌入式Java處理器微碼指令集 動態(tài)裝載方法。通過微碼指令集(即本地指令集)的動態(tài)優(yōu)化和裝載, 可更好地滿足嵌入式系統(tǒng)實時、可靠、便攜等的要求。利用對實現(xiàn)各個 Java字節(jié)碼的微碼指令段的優(yōu)化,可以不斷提高系統(tǒng)運行的速度。同時, 增加用戶自定義的微碼指令段,可以很方便地對指令的功能進行擴充, 提升嵌入式系統(tǒng)的性能。更為常用的是,通過微碼指令集的動態(tài)裝載, 可以任意改變嵌入式系統(tǒng)的啟動代碼,在硬件的最底層滿足了不同應(yīng)用 場合的需求,便捷高效。
      一種嵌入式Java處理器微碼指令集動態(tài)裝載方法,它的步驟包括-
      1) 系統(tǒng)上電;
      2) 裝載模塊選中外部存儲器的控制器,并指向外部存儲器的全零地
      址;
      3) 裝載模塊讀取外部存儲器當前地址的數(shù)據(jù),并存儲在裝載模塊內(nèi) 部的臨時寄存器之中,裝載模塊的計數(shù)器進行一次加1操作,外部存儲 器的控制器指向下一個地址;
      4) 裝載模塊根據(jù)芯片內(nèi)部存儲器的位寬和容量確定微碼拼接所需讀 取外部存儲器的次數(shù),每讀取一次外部數(shù)據(jù),都暫存在裝載模塊的臨時 寄存器,進行拼接;
      5) 裝載模塊將拼接完成后的整組數(shù)據(jù)寫入到內(nèi)部存儲器,同時指向 內(nèi)部存儲器的地址進行加1操作,指向下一個內(nèi)部存儲單元;
      6) 重復3) _5)的步驟,直到所有的處理器微碼指令集寫入完成;
      7) 執(zhí)行系統(tǒng)啟動代碼。
      所述裝載模塊選取模塊優(yōu)先級可控的總線技術(shù),使裝載模塊優(yōu)先級 高于主核,優(yōu)先考慮AMBA總線。
      所述外部微碼存儲器可選取不同位寬的Flash存儲器。 所述內(nèi)部存儲器使用SRAM技術(shù)或Flash (EEPROM)技術(shù)。 本發(fā)明的有益效果
      1) 在其它平臺上運行的Java程序同樣可以在該平臺上運行,保證上 層應(yīng)用的通用性。
      2) 針對不同嵌入式應(yīng)用環(huán)境可以對本地指令集進行即時的更新優(yōu) 化,比其它Java處理器更有專用性。如精簡指令集,去除該系統(tǒng)無需使 用的微碼段,使系統(tǒng)有更多空間存放啟動用微碼程序。或是設(shè)計出更為 高效的實現(xiàn)字節(jié)碼的微碼段后,可以隨時更新原有的相應(yīng)微碼段。
      3) 可開發(fā)用戶自定義的本地微碼指令段,使處理器效率得以提升。 其它已將本地指令集固化在芯片內(nèi)的處理器無法實現(xiàn)。如嵌入一段時間 相加的代碼,替代基本的整數(shù)相加代碼,可以快速實現(xiàn)時間相加。
      4) 可按照需求開發(fā)功能強大的系統(tǒng)啟動代碼,并且可隨時更新。而 其它Java處理器若需完成相應(yīng)內(nèi)容,必須有操作系統(tǒng)的支持。相比而言, 無需操作系統(tǒng)可實時更新的啟動代碼更為便捷與高效。


      圖1為微碼指令集動態(tài)加載流程圖2為微碼指令讀寫示意圖3為微碼指令動態(tài)裝載結(jié)構(gòu)示意圖。
      具體賣施方式
      下面結(jié)合附圖對本發(fā)明進行進一步的闡述。
      微碼指令集動態(tài)加載過程如圖1所示,在系統(tǒng)上電后,指令裝載模 塊會從外部的存儲器中讀取事先存放好的指令集代碼。經(jīng)過裝載模塊的 內(nèi)部地址映射機制,將相應(yīng)的微碼指令寫入到芯片內(nèi)部的各個存儲器及 寄存器。當所有的微碼指令均已正確存放到芯片內(nèi)部對應(yīng)的存儲器和寄
      存器后,裝載模塊則輸出表示初始化完成的信號,此時處理器接收到初 始化完成的有效信號后,即開始執(zhí)行片內(nèi)的系統(tǒng)啟動代碼,進而執(zhí)行其 它程序。
      在圖1中,表示為"微碼拼接"的過程以虛線框畫出。該過程主要 是解決芯片外部和芯片內(nèi)部存儲器位數(shù)不一的問題。若片外的存儲器為8 位,片內(nèi)的存儲器亦為8位,則微碼的導入可以直接通過地址映射完成; 若片外的存儲器為8位,而片內(nèi)的存儲器為ll位,則裝載模塊需要對片 外存儲器讀取兩次后,拼接成16位數(shù)據(jù),再截取其有效的11位數(shù)據(jù)寫 入到芯片內(nèi)部。所以,該子模塊實現(xiàn)了數(shù)據(jù)拼接的功能,若芯片內(nèi)外存 儲器位數(shù)相同,該子模塊可以省略。
      圖2中顯示了 Java微碼指令集讀取、拼接、寫入的詳細過程。系統(tǒng)
      上電后,裝載模塊選中外部存儲器的控制器,并指向外部存儲器的全零 地址。從全零地址開始讀取相應(yīng)的數(shù)據(jù),然后地址順序加1,繼續(xù)讀取下 一個數(shù)據(jù)。
      芯片內(nèi)部的存儲器位寬與容量已固定,所以根據(jù)當前正在初始化的 內(nèi)部存儲器,可以判斷拼接成一組內(nèi)部數(shù)據(jù)所需讀取外部存儲器的次數(shù)。 每讀取一次外部數(shù)據(jù),都會暫存在裝載模塊的臨時寄存器,進行拼接。 拼接完成后,即將整組數(shù)據(jù)寫入到內(nèi)部存儲器,同時指向內(nèi)部存儲器的 地址進行加l操作,指向下一個內(nèi)部存儲器地址。
      如圖2中所示,外部存儲器為8位數(shù)據(jù)位寬,內(nèi)部存儲器位數(shù)最寬 為32位,所以臨時寄存器亦為32位。當前初始化的內(nèi)部存儲器1為32 位寬,所以需要從外部讀取4次數(shù)據(jù),拼接為32位后再寫入到內(nèi)部存儲 器1內(nèi)。又如當前正在初始化內(nèi)部存儲器2,該存儲器為24位寬,則只 需讀取3次外部數(shù)據(jù)即可拼接為24位,讀取24位外部數(shù)據(jù)存放到臨時 寄存器的低24位后,高8位無需處理,只需將內(nèi)部存儲器2的數(shù)據(jù)線和 臨時寄存器的低24位連接,即可達到數(shù)據(jù)截取的目的。
      裝載模塊中含有一個計數(shù)器,每讀取一次外部數(shù)據(jù),計數(shù)器的值則 進行一次加1操作。因為內(nèi)部存儲器的位寬和容量已固定,所以需要讀 取外部存儲器的次數(shù)很容易就可以計算出來。使用計數(shù)器的目的在于, 產(chǎn)生控制當前初始化的內(nèi)部存儲器的片選信號,以及判斷臨時寄存器中 的有效位數(shù)(或拼接次數(shù))。
      如圖2所示,假設(shè)內(nèi)部存儲器l的容量為64個字,內(nèi)部存儲器2的 容量為128個字,內(nèi)部存儲器3的容量為128個字。對應(yīng)各個存儲器的 位數(shù),內(nèi)部存儲器1需要讀取4次外部數(shù)據(jù)拼接為一個32位數(shù),內(nèi)部存
      儲器2需要讀取3次外部數(shù)據(jù)拼接為一個24位數(shù),內(nèi)部存儲器3需要讀 取2次外部數(shù)據(jù)拼接為一個11位數(shù)。則初始化內(nèi)部存儲器1所需讀取外 部數(shù)據(jù)的次數(shù)為64*4,即256次。所以當計數(shù)器計數(shù)到256時,內(nèi)部存 儲器1己完成初始化,即釋放內(nèi)部存儲器1的片選信號,使內(nèi)部存儲器2 的片選有效,同時內(nèi)部地址清零,相當于從內(nèi)部存儲器2的零地址開始 計算。以此類推,內(nèi)部存儲器2所需讀取外部數(shù)據(jù)的次數(shù)為128*3,即 384次。所以當計數(shù)器計數(shù)到256+384,即640時,內(nèi)部存儲器2初始化 完畢,進而對內(nèi)部存儲器3進行初始化。當計數(shù)器計數(shù)到896 (640+256) 時,即內(nèi)部存儲器全部初始化完畢,則輸出結(jié)束信號,系統(tǒng)開始執(zhí)行啟 動代碼,進入正常工作狀態(tài)。
      圖3中省略了 Java處理器的其余模塊,可更清楚地顯示出裝載模塊 和主核以及外部存儲器的邏輯關(guān)系。系統(tǒng)上電后,作為當前的主控制模 塊——裝載模塊,選中閃存控制器,從外部讀取數(shù)據(jù)。并將拼接好的數(shù) 據(jù),逐組寫入到Java主核的各個片內(nèi)寄存器,如跳轉(zhuǎn)表、偏移表、微碼 表等。當Java主核內(nèi)的各個存儲器都初始化完成后,裝載模塊釋放控制 權(quán),此時Java主核充當主控制模塊,系統(tǒng)開始執(zhí)行啟動代碼,進入正常 工作狀態(tài)。
      當系統(tǒng)上電后,因Java處理器主核中沒有任何微碼內(nèi)容,所以此時 的Java處理器無法工作。即上電后,必須讓微碼指令裝載模塊自動開始 工作。首先從外部微碼指令存儲器讀取數(shù)據(jù),根據(jù)Java處理器主核內(nèi)存 儲器的位數(shù)要求,對外部讀入的數(shù)據(jù)進行拼接或截取。然后按照指令裝 載模塊的內(nèi)部地址映射機制,將拼接或截取完成的微碼指令寫入到主核 的內(nèi)部存儲器當中。當所有片內(nèi)的存儲器都初始化完成后,Java處理器主核即可開始執(zhí)行啟動代碼,進入工作狀態(tài)。
      進入正常工作狀態(tài)后的Java處理器可以按照用戶要求,編寫程序?qū)?外部的微碼指令存儲器進行更新操作。當系統(tǒng)再次復位上電后,Java處 理器即可使用更新后的微碼指令集。
      實現(xiàn)該技術(shù)有幾處可替換點
      1) 連接子模塊的總線技術(shù)。因系統(tǒng)上電后首先工作的是裝載模塊, 所以應(yīng)選取模塊優(yōu)先級可控的總線技術(shù),使裝載模塊優(yōu)先級高于主核, 如AMBA總線。
      2) 外部微碼存儲器??筛鶕?jù)系統(tǒng)設(shè)計要求,選取不同位寬的Flash 存儲器。如果片內(nèi)和片外存儲器位寬相同,則加載過程可以省略數(shù)據(jù)的 拼接和截取功能。
      3) 內(nèi)部微碼存儲器。內(nèi)部的存儲器可使用SRAM技術(shù)或Flash (EEPROM)技術(shù)。SRAM的讀寫速度更快,但系統(tǒng)掉電后不能保存數(shù)
      據(jù);而Flash可以在系統(tǒng)掉電后保存數(shù)據(jù),即可在指令集更新后,才進行 載入過程,否則芯片可以直接上電進入工作狀態(tài)。但Flash (EEPROM)
      的數(shù)據(jù)讀寫速度相比較慢。
      權(quán)利要求
      1、一種嵌入式Java處理器微碼指令集動態(tài)裝載方法,其特征在于,它的步驟包括1)系統(tǒng)上電;2)裝載模塊選中外部存儲器的控制器,并指向外部存儲器的全零地址;3)裝載模塊讀取外部存儲器當前地址的數(shù)據(jù),并存儲在裝載模塊內(nèi)部的臨時寄存器之中,裝載模塊的計數(shù)器進行一次加1操作,外部存儲器的控制器指向下一個地址;4)裝載模塊根據(jù)芯片內(nèi)部存儲器的位寬和容量確定微碼拼接所需讀取外部存儲器的次數(shù),每讀取一次外部數(shù)據(jù),都暫存在裝載模塊的臨時寄存器,進行拼接;5)裝載模塊將拼接完成后的整組數(shù)據(jù)寫入到內(nèi)部存儲器,同時指向內(nèi)部存儲器的地址進行加1操作,指向下一個內(nèi)部存儲單元;6)重復3)-5)的步驟,直到所有的處理器指令集寫入完成;7)執(zhí)行系統(tǒng)啟動代碼。
      2、 根據(jù)權(quán)利要求1所述的嵌入式Java處理器微碼指令集動態(tài)裝載方 法,其特征在于,所述裝載模塊選取模塊優(yōu)先級可控的總線技術(shù),使加 載模塊優(yōu)先級高于主核,優(yōu)先考慮AMBA總線。
      3、 根據(jù)權(quán)利要求1所述的嵌入式Java處理器微碼指令集動態(tài)裝載方 法,其特征在于,所述外部微碼存儲器可選取不同位寬的Flash存儲器。
      4、 根據(jù)權(quán)利要求1所述的嵌入式Java處理器微碼指令集動態(tài)裝載方 法,其特征在于,所述內(nèi)部存儲器使用SRAM技術(shù)或Flash (EEPROM)技術(shù)。
      全文摘要
      本發(fā)明公開了一種Java處理器微碼指令集動態(tài)裝載技術(shù),屬于嵌入式處理器設(shè)計領(lǐng)域。本發(fā)明通過在原有的處理器的基礎(chǔ)上增加了一種指令集裝載模塊。首先裝載模塊從外部存儲器讀取微碼指令,寄存在裝載模塊的臨時寄存器中,再通過微碼拼接技術(shù)解決外部存儲器和內(nèi)部存儲器位數(shù)不一的問題,最后再將拼接好的微碼指令寫入到內(nèi)部存儲器之中,當所有內(nèi)部存儲器都初始化完成,即指令集加載到芯片內(nèi)部后,系統(tǒng)開始執(zhí)行啟動代碼,進入正常工作狀態(tài)。通過本發(fā)明不僅使其它平臺的Java程序在該平臺上正確運行,保證上層應(yīng)用的通用性,還可以針對不同的嵌入式應(yīng)用環(huán)境對本地指令集進行更新優(yōu)化,實時修改啟動代碼,提高處理器效率。
      文檔編號G06F9/445GK101349973SQ200810198330
      公開日2009年1月21日 申請日期2008年9月5日 優(yōu)先權(quán)日2008年9月5日
      發(fā)明者譚洪舟, 陸許明, 陳摯睿 申請人:中山大學
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1