專利名稱:調試器裝置及調試方法
技術領域:
本發(fā)明涉及一種調試器(debugger)裝置,按照如下方式進行配置將提供給主機PC的系統(tǒng)LSI的指令暫時存儲在E-存儲器(仿真存儲器)中,以便稍后從E-存儲器提供給CPU。
背景技術:
在作為傳統(tǒng)調試器裝置的示例的電路內仿真器(ICE)中,將調試監(jiān)控程序寫入諸如超高速緩沖存儲器之類的內置存儲器中,并仿真CPU的指令。前述處理中的問題在于,如果芯片間延遲較大,因為系統(tǒng)LSI和ICE是不同的芯片,則不能仿真指令;將ICE并入系統(tǒng)LSI中導致了面積的增加;在從外部ROM下載監(jiān)控程序的情況下,不能對內置ROM進行調試;以及不能仿真并入了指令的ROM。
發(fā)明內容
因此,本發(fā)明的主要目的是提供一種調試器裝置,能夠將指令有效地寫入E-存儲器,控制由于傳送業(yè)務量而導致的額外開銷,并向CPU有效地提供指令,同時,控制面積的增加。
通過以下的描述,本發(fā)明的其他目的、特征和優(yōu)點將變得更加清楚。
此后,將對多種類型的組件進行描述。所述組件可以由軟件、硬件或硬件和軟件的組合來構成。
仿真存儲器單元用于暫時存儲由CPU執(zhí)行的指令,并在隨后的描述中,縮寫為E-存儲器單元。
E-存儲器執(zhí)行監(jiān)督單元與CPU、E-存儲器單元和主機PC相連,從而在前述三個組件之間中繼控制信號和數據,并縮寫為執(zhí)行監(jiān)督單元。將主機PC縮寫為主機。
1.根據本發(fā)明的一種調試器裝置,包括多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,按照如下方式配置所述執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入多個E-存儲器單元中,并按照CPU的指令地址,從多個E-存儲器單元之一中讀取指令序列,并傳送給CPU。當CPU的指令地址不相關時,向主機輸出指令重寫命令。
在前述結構中,在主機中,根據執(zhí)行序列,預先跟蹤指令,向多個E-存儲器單元順序傳送其結果,以便存儲在其中。按照這種方式,可以將指令更為有效地存儲在E-存儲器單元中,同時控制由傳送業(yè)務量而導致的額外開銷,從而向CPU有效地提供指令。
2.根據本發(fā)明的一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤要被存儲在E-存儲器單元中的指令,并以指令序列的形式傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,按照如下方式配置所述執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入多個E-存儲器單元中,并按照CPU的指令地址,從多個E-存儲器單元之一中讀取指令序列,并傳送給CPU。當CPU的指令地址不相關時,向主機輸出指令重寫命令。
在前述結構中,當在E-存儲器單元未存儲所需指令時,實現E-存儲器單元的切換,并輸出指令重寫命令。然后,從主機讀取隨后要執(zhí)行的指令序列,并存儲在當前未使用的E-存儲器單元中。按照這種方式,可以控制由傳送業(yè)務量而導致的額外開銷,從而向CPU有效地提供指令。
3.根據本發(fā)明的一種調試器裝置,包括
CPU,所述CPU執(zhí)行指令;多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤要被存儲在E-存儲器單元中的指令,并以指令序列的形式傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,按照如下方式配置所述執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入多個E-存儲器單元中,并依照CPU的指令地址,從多個E-存儲器單元之一中讀取指令序列,并傳送給CPU。當按照CPU的指令地址的指令表示無條件分支指令的執(zhí)行時,向主機輸出指令重寫命令。
在前述結構中,在主機中,根據執(zhí)行序列,預先跟蹤指令,并且分別向多個E-存儲器單元傳送在無條件分支之前的指令和從無條件分支目的地指令向前的指令,并彼此獨立地存儲在多個E-存儲器單元中。于是,當執(zhí)行無條件分支指令時,實現E-存儲器單元的切換。按照這種方式,從而能夠控制由傳送業(yè)務量而導致的額外開銷,借此,向CPU有效地提供指令。
4.根據本發(fā)明的一種調試器裝置,按照如下方式進行配置。
在主機中,根據執(zhí)行序列,跟蹤指令,并在無條件分支指令的分支目的地屬于相同E-存儲器單元的存儲區(qū)時,由執(zhí)行監(jiān)督單元將適合于相同E-存儲器單元的多個指令序列寫入相同的E-存儲器單元中。CPU向執(zhí)行監(jiān)督單元輸出無條件分支指令的地址。執(zhí)行監(jiān)督單元依照CPU的指令地址,判斷由無條件分支指令當前讀取的E-存儲器單元是否與先前讀取的E-存儲器單元相同,并在其判斷相同時,終止指令重寫命令的輸出。
在前述結構中,當在主機中,根據執(zhí)行序列,預先跟蹤指令時,判斷其分支目的地是否屬于E-存儲器單元的存儲器容量。當判斷分支目的地如此時,不將分支目的地處理為不同的指令序列。按照這種方式,額外地傳送指令以及為了分支的目的而將其寫入E-存儲器單元變得不必要。因此,可以控制由傳送業(yè)務量而導致的額外開銷,借此向CPU有效地提供指令。
5.根據本發(fā)明的一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤要被存儲在E-存儲器單元中的指令,并以指令序列的形式傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,按照如下方式配置所述執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入多個E-存儲器單元中,并按照CPU的指令地址,從多個E-存儲器單元之一中讀取指令序列,并傳送給CPU。當與CPU的指令地址按照的指令表示無條件分支指令的執(zhí)行時,向主機輸出指令重寫命令,以及當與CPU的指令地址相一致的指令表示子程序調用指令時,終止指令重寫命令的輸出。
根據前述結構,在通過子程序調用指令進行分支的情況下,保持子程序分支信息,并在通過子程序調用指令進行分支時,不改變分支起點中的指令序列。這成功地控制了由除了針對E-存儲器單元傳送和寫入指令以外的傳送業(yè)務量而導致的額外開銷,從而向CPU有效地提供指令。
6.根據本發(fā)明的一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤要被存儲在E-存儲器單元中的指令,并以指令序列的形式傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,按照如下方式配置所述執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入多個E-存儲器單元中,并按照CPU的指令地址,從多個E-存儲器單元之一中讀取指令序列,并傳送給CPU。當與CPU的指令地址相一致的指令表示無條件分支指令的執(zhí)行時,向主機輸出指令重寫命令,以及當與指令地址相一致的指令表示例外處理的執(zhí)行時,終止指令重寫命令的輸出。
在前述結構中,當諸如中斷等之類的例外處理發(fā)生時,保持例外處理,并在通過例外處理進行分支時,不改變分支起點中的指令序列。這成功地控制了由除了針對E-存儲器單元傳送和寫入指令以外的傳送業(yè)務量而導致的額外開銷,從而向CPU有效地提供指令。
7.根據本發(fā)明的一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤要被存儲在E-存儲器單元中的指令,并以指令序列的形式傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,按照如下方式配置所述執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入多個E-存儲器單元中,并依照CPU的指令地址,從多個E-存儲器單元之一中讀取指令序列,并傳送給CPU。當與CPU的指令地址相一致的指令表示條件分支指令的執(zhí)行時,判斷該分支是否被建立,并當判斷所述分支被建立時,向主機輸出指令重寫命令。
在前述結構中,當在指令序列中包括條件分支指令時,根據條件分支指令的建立或失敗,分支目的地中的指令序列變得必要或不必要。在建立或失敗之一的情況下,將不必要的指令序列重寫入后續(xù)的必要指令序列中。這實現了對由除了針對E-存儲器單元傳送和寫入指令以外的傳送業(yè)務量而導致的額外開銷的控制,從而向CPU有效地提供指令。
8.根據本發(fā)明的一種調試器裝置,包括按照如下方式進行工作的主機。
根據指令序列,跟蹤要由CPU執(zhí)行的指令,并對所跟蹤的指令進行仿真。當仿真結果表示條件分支指令的出現時,預測該分支是否被建立或失敗。當預測該分支失敗時,終止針對執(zhí)行監(jiān)督單元的分支目的地的指令序列傳送。
在前述結構中,當在主機中預先跟蹤要執(zhí)行的指令時,對指令序列進行仿真,并從而通過保留內部寄存器的值等,預測該分支是否被建立或失敗。這實現了對由除了針對E-存儲器單元傳送和寫入指令以外的傳送業(yè)務量而導致的額外開銷的控制,從而向CPU有效地提供指令。
9.根據本發(fā)明的一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤要被存儲在E-存儲器單元中的指令,并以指令序列的形式傳送結果,并可能傳送每一個均包括多條條件分支指令的指令序列;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,按照如下方式配置所述執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入多個E-存儲器單元中,并按照CPU的指令地址,從多個E-存儲器單元之一中讀取指令序列,并傳送給CPU。當與CPU的指令地址相一致的指令表示多條條件分支指令中的第一條件分支指令的執(zhí)行時,判斷分支是否被建立。當判斷分支被建立時,向主機輸出指令重寫命令,以及當判斷分支失敗時,終止指令重寫命令的輸出。前述結構中的技術特征在于在每個指令序列中包括了多條條件分支指令。
在前述結構中,當在指令序列中包括多條條件分支指令時,例如,將多條條件分支指令的地址保持在每當分支失敗時進行移位的FIFO(先進先出)中。當分支被建立時,清除FIFO的內容。按照這種方式,可以對由額外地針對E-存儲器單元傳送和寫入指令時所產生的傳送業(yè)務量而導致的額外開銷進行控制,從而向CPU有效地提供指令。
10.根據本發(fā)明的一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤要被存儲在E-存儲器單元中的指令,并以指令序列的形式傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,按照如下方式配置所述執(zhí)行監(jiān)督單元將從主機傳送過來的每個任務的指令序列單獨寫入多個E-存儲器單元中,并按照CPU的指令地址,從多個E-存儲器單元之一中讀取任務的指令序列,從而傳送給CPU。當與CPU的指令地址相一致的指令表示任務切換的執(zhí)行時,向主機輸出指令重寫命令。
在前述結構中,在主機中,預先按照OS(操作系統(tǒng))的任務,區(qū)分指令序列,從而向E-存儲器單元傳輸每個任務的指令序列,并存儲在E-存儲器單元中,并且在切換任務時,實現對E-存儲器單元的切換。按照這種方式,可以對由除了針對E-存儲器單元傳送和寫入指令以外的傳送業(yè)務量而導致的額外開銷進行控制,從而向CPU有效地提供指令。
11.根據本發(fā)明的一種調試器裝置,按照如下方式進行配置主機根據執(zhí)行序列,跟蹤由CPU執(zhí)行的指令,從而產生執(zhí)行樹結構,主機根據樹結構,將指令序列分割為分支指令的分支目的地和分支起點,從而向執(zhí)行監(jiān)督單元傳輸每個指令序列的指令,以及執(zhí)行監(jiān)督單元將按照指令序列從主機傳送過來的指令順序寫入多個E-存儲器單元。
在前述結構中,在主機中,預先跟蹤要執(zhí)行的所有指令,從而檢測其中產生了對編程操縱的干擾的斑點(節(jié)點部分),并將所檢測到的節(jié)點部分的地址和節(jié)點部分之間的字節(jié)數記錄為樹結構。按照這種方式,程序依照對各個指令的行為的分析執(zhí)行對E-存儲器單元的重寫變得不必要。因此,可以控制由分析而導致的額外開銷,從而向CPU有效地提供指令。
12.根據本發(fā)明的一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;單一的E-存儲器單元,所述單一的E-存儲器單元存儲由CPU執(zhí)行的指令;
主機,所述主機跟蹤要被存儲在E-存儲器單元中的指令,并以指令序列的形式與寫入前導地址一起傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,按照如下方式配置所述執(zhí)行監(jiān)督單元保持從主機傳送過來的寫入前導地址,并按照寫入前導地址,將從主機傳送過來的指令序列寫入E-存儲器單元中。保持從主機傳送過來的寫入前導地址和前導指令地址,并根據寫入前導地址和前導指令地址,將CPU的指令地址轉換為存取E-存儲器單元的地址。當與CPU的指令地址相一致的指令表示分支指令的執(zhí)行時,向主機輸出指令重寫命令,并保持從主機響應地址重寫命令而傳送過來的、要隨后執(zhí)行的指令序列的寫入前導地址和前導指令地址。前述結構的技術特征在于包括單一的E-存儲器單元。
根據前述結構,主機在將指令寫入E-存儲器單元時,傳送寫入前導地址,以及在從E-存儲器單元中讀取指令時,傳送寫入前導地址和前導指令地址。按照這種方式,可以在連續(xù)的空間中實現相對于E-存儲器單元的寫入和讀取,從而實現了單一E-存儲器單元的有效使用。
13.根據本發(fā)明的一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;單一的E-存儲器單元,所述單一的E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤要被存儲在E-存儲器單元中的指令,并以指令序列的形式與寫入前導地址一起傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,按照如下方式配置所述執(zhí)行監(jiān)督單元保持從主機傳送過來的寫入前導地址,并依照寫入前導地址,將從主機傳送過來的指令序列寫入E-存儲器單元中。保持從主機傳送過來的寫入前導地址和前導指令地址以及可能隨后執(zhí)行的指令序列的寫入前導地址和前導指令地址,并根據寫入前導地址和前導指令地址,將CPU的指令地址轉換為存取E-存儲器單元的地址。根據轉換后的地址,從E-存儲器單元中讀取指令,從而傳送給CPU。當與CPU的指令地址相一致的指令表示分支指令的執(zhí)行時,以隨后的寫入前導地址代替當前的寫入前導地址,并以隨后的前導指令地址代替當前的前導指令地址。然后,向主機輸出指令重寫命令,并作為下一個選擇,分別保持從主機響應地址重寫命令而傳送過來的、要隨后執(zhí)行的指令序列的寫入前導地址和前導指令地址。
在前述結構中,保持寫入前導地址和前導指令地址,并在分支時,以隨后的寫入前導地址和前導指令地址代替。按照這種方式,控制了由于在分支時額外傳送地址而導致的額外開銷。
在結合附圖進行考慮的同時,通過以下對本發(fā)明的描述,前述和其他方面將變得顯而易見。
圖1是示出了根據本發(fā)明一個實施例的調試器裝置的結構的方框圖。
圖2是示出了根據本發(fā)明實施例1的執(zhí)行監(jiān)督單元的結構的方框圖。
圖3是根據實施例1存儲在第一1E存儲器和第二2E存儲器中并由CPU隨后處理的指令序列的示意圖。
圖4是示出了根據本發(fā)明實施例2的執(zhí)行監(jiān)督單元的結構的方框圖。
圖5是根據實施例2存儲在第一1E存儲器和第二2E存儲器中并由CPU隨后處理的指令序列的示意圖。
圖6是根據本發(fā)明實施例3的包括無條件分支指令在內的指令序列的示意圖。
圖7是示出了根據本發(fā)明實施例4的執(zhí)行監(jiān)督單元的結構的方框圖。
圖8是根據實施例4存儲在第一1E存儲器和第二2E存儲器中并由CPU隨后處理的指令序列的示意圖。
圖9是根據實施例4進行從指令序列1到指令序列2的子程序分支的指令序列的示意圖。
圖10是示出了根據本發(fā)明實施例5的執(zhí)行監(jiān)督單元的結構的方框圖。
圖11是根據實施例5存儲在第一1E存儲器和第二2E存儲器中并由CPU隨后處理的指令序列的示意圖。
圖12是示出了根據本發(fā)明實施例6的執(zhí)行監(jiān)督單元的結構的方框圖。
圖13是根據實施例6存儲在第一1E存儲器和第二2E存儲器中并由CPU隨后處理的指令序列的示意圖。
圖14是示出了根據本發(fā)明實施例7的執(zhí)行監(jiān)督單元的結構的方框圖。
圖15是根據實施例7存儲在第一1E存儲器和第二2E存儲器中并由CPU隨后處理的指令序列的示意圖。
圖16是根據本發(fā)明實施例8由CPU處理的仿真預測結果和指令序列的示意圖。
圖17是根據實施例8由CPU處理的仿真預測結果和指令序列的示意圖。
圖18是示出了根據本發(fā)明實施例9的執(zhí)行監(jiān)督單元的結構的方框圖。
圖19示出了根據實施例9由CPU處理的任務。
圖20是根據本發(fā)明實施例10在主機中產生的分支相關的樹結構。
圖21是示出了根據本發(fā)明實施例11的調試器裝置的結構的方框圖。
圖22是示出了根據實施例11的執(zhí)行監(jiān)督單元的結構的方框圖。
圖23是根據實施例11存儲在第一1E存儲器和第 2E存儲器中并由CPU隨后處理的指令序列的示意圖。
圖24是示出了根據本發(fā)明實施例12的執(zhí)行監(jiān)督單元的結構的方框圖。
在所有這些附圖中,以相同的數字表示相同的組件。
具體實施例方式
此后,將參照附圖,對本發(fā)明的優(yōu)選實施例進行描述。
實施例1如圖1所示,系統(tǒng)LSI 101包括CPU 110、ROM 111、選擇器112、仿真存儲器執(zhí)行監(jiān)督單元113、串行發(fā)送/接收單元114、第一仿真存儲器115、以及第二仿真存儲器116。此后,將仿真存儲器執(zhí)行監(jiān)督單元縮寫為執(zhí)行監(jiān)督單元,將串行發(fā)送/接收單元縮寫為發(fā)送/接收單元,將第一仿真存儲器縮寫為第一E-存儲器,以及將第二仿真存儲器縮寫為第二E-存儲器。主機PC(此后,縮寫為PC)102是計算機,其中安裝有能夠相對于發(fā)送/接收單元114進行串行發(fā)送和接收的調試器軟件。
如圖2所示,執(zhí)行監(jiān)督單元113包括第一地址選擇器121、第一地址轉換器122、第一比較裝置123、第一地址寄存器124、第二地址選擇器125、第二地址轉換器126、第二比較裝置127、第二地址寄存器128、寫入控制部分129、存儲器存儲器改變檢測部分130、數據選擇器131、邏輯和電路132、以及執(zhí)行存儲器保持部分134。此后,將第一地址選擇器縮寫為第一選擇器,將第一地址轉換器縮寫為第一轉換器,將第一地址寄存器縮寫為第一寄存器,將第二地址選擇器縮寫為第二選擇器,將第二地址轉換器縮寫為第二轉換器,將第二地址寄存器縮寫為第二寄存器,將存取存儲器改變檢測部分縮寫為改變檢測部分,以及將邏輯和電路縮寫為或電路。
發(fā)送/接收單元114實現對主機的串行發(fā)送和接收,并以并行數據的形式,向執(zhí)行監(jiān)督單元113傳送接收到的指令和前導指令的地址(此后,縮寫為前導地址),同時,以串行數據的形式,向主機發(fā)送從執(zhí)行監(jiān)督單元113輸入的指令重寫命令Sc。
執(zhí)行監(jiān)督單元113通過發(fā)送/接收單元114,將從主機102接收到的指令存儲在第一E-存儲器115和第二E-存儲器116中,并在輸出選擇信號Se的同時,向選擇器112發(fā)送從第一E-存儲器115和第二E-存儲器116讀取出的指令。
按照來自執(zhí)行監(jiān)督單元113的地址,對第一E-存儲器115和第二E-存儲器116進行存取,從而讀取和寫入數據。
選擇器112在來自執(zhí)行監(jiān)督單元113的選擇信號Se是“L”時,選擇ROM 111的數據,以及在選擇信號Se為“H”時,選擇來自執(zhí)行監(jiān)督單元113的數據。按照CPU所輸出的指令地址,對ROM 111進行存取,或者通過執(zhí)行監(jiān)督單元113對第一E-存儲器115或第二E-存儲器116進行存取。從選擇器112提供讀出指令,并由CPU 110執(zhí)行該指令。
寫入控制部分129將來自發(fā)送/接收單元114的指令和前導地址輸入其中,將前導地址寫入第一寄存器124或第二寄存器128中,并向第一選擇器121或第二選擇器125輸出等價于第一E-存儲器115或第二E-存儲器116的存儲容量的指令。
第一寄存器124和第二寄存器128存儲來自寫入控制部分129的前導地址。
比較裝置123將來自第一寄存器124的前導地址和來自CPU 110的指令地址輸入其中,并判斷指令地址是否對應于第一E-存儲器115的存儲區(qū)域。第二比較裝置127將來自第二寄存器128的前導地址和來自CPU 110的指令地址輸入其中,并判斷指令地址是否對應于第二E-存儲器116的存儲區(qū)域。
當第一比較裝置123的判斷結果為肯定的時,第一轉換器122根據第一寄存器124的前導地址,將CPU的指令地址轉換為用于存取第一E-存儲器115的地址。此外,當第二比較裝置127的判斷結果為肯定的時,第二轉換器126根據第二寄存器128的前導地址,將CPU的指令地址轉換為用于存取第二E-存儲器116的地址。
當寫入對第一E-存儲器115的存取時,第一選擇器121選擇寫入控制部分129的地址,否則,選擇由第一轉換器122轉換后的地址。
當寫入對第二E-存儲器116的存取時,第二選擇器125選擇寫入控制部分129的地址,否則,選擇由第二轉換器126轉換后的地址。
當第一比較裝置123的判斷結果為肯定的時,數據選擇器131選擇第一E-存儲器115的數據,以及當第二比較裝置127的判斷結果為肯定的時,選擇第二E-存儲器116的數據?;螂娐?32以選擇信號Se的形式向選擇器112輸出第一和第二比較裝置123和127的判斷結果的邏輯和。
在根據第一和第二比較裝置123和127的判斷結果,當前執(zhí)行存儲器號不同于執(zhí)行存儲器保持部分134的存儲器號時,改變檢測部分130激活指令重寫命令Sc,并向發(fā)送/接收單元114輸出。執(zhí)行存儲器保持部分134從改變檢測部分130接收當前執(zhí)行存儲器號,并進行保持。
對如上配置的調試器裝置的操作描述如下。圖3示出了從主機傳送過來的指令序列。首先,將指令序列存儲在第一和第二E-存儲器115和116中,之后由CPU 110執(zhí)行。將調試器裝置的操作分解為三個階段1、2和3,并按照該順序,描述如下。
1.將指令寫入E-存儲器的操作主機根據執(zhí)行序列,跟蹤指令,以CPU 110首先執(zhí)行的指令為開始,并將指令序列號1及其前導地址存儲為指令序列1。指令序列1的大小對應于第一E-存儲器115的存儲器容量。接下來,主機將指令序列號2及其前導地址存儲為指令序列2。指令序列2的大小對應于第二E-存儲器116的存儲器容量。之后,按照這種方式,主機將隨后的指令序列號及其前導地址存儲為指令序列3、指令序列4。
主機將指令序列1的指令和前導地址轉換為串行數據,并將其傳輸到發(fā)送/接收單元114。發(fā)送/接收單元114將接收到的指令序列1的指令和前導地址轉換為并行數據,并將其傳送到寫入控制部分129。寫入控制部分129將前導地址寫入第一寄存器124中。在這種情況下,第一選擇器121向第一E-存儲器115發(fā)出從寫入控制部分129傳遞過來的地址,并根據該地址,對第一E-存儲器115進行存取,從而將從寫入控制部分129傳遞過來的指令序列1的指令寫入其中。
接下來,主機通過發(fā)送/接收單元114向寫入控制部分129傳送指令序列2的指令和前導地址,并由寫入控制部分129將前導地址寫入第二寄存器128中。在這種情況下,第二選擇器125向第二E-存儲器116發(fā)出從寫入控制部分129傳遞過來的地址,并根據該地址,對第二E-存儲器116進行存取,從而將從寫入控制部分129傳遞過來的指令序列2的指令寫入其中。
2.執(zhí)行指令序列1的操作CPU 110輸出指令序列1的指令地址。第一比較裝置123將CPU的指令地址與第一寄存器124的指令序列1的前導地址進行比較,從而判斷該指令地址是否對應于第一E-存儲器115的存儲器區(qū)域。此時,判斷結果是肯定的。因為第一比較裝置123的判斷結果為肯定的,第一轉換器122根據指令序列1的前導地址,將指令地址轉換為用于存取第一E-存儲器115的地址。相反,第二比較裝置127的判斷結果為否定的,因此,第二轉換器126并不實現對指令地址的轉換。
由第一選擇器121選擇通過第一轉換器122轉換后的地址,并傳輸給第一E-存儲器115。依照轉換后的地址,存取第一E-存儲器115,并向數據選擇器131輸出數據。因為第一比較裝置123的判斷結果為肯定的,數據選擇器131選擇來自第一E-存儲器115的數據,并將其傳輸給選擇器112。此外,因為第一比較裝置123的判斷結果為肯定的,或電路132向選擇器112輸出選擇信號Se,即“H”。因為選擇信號Se為“H”,選擇器112選擇從第一E-存儲器115讀取出的指令,并將其傳輸給CPU 110。CPU 110將從第一E-存儲器115讀取出的指令輸入其中,并執(zhí)行這些指令。
改變檢測部分130根據第一比較裝置123的判斷結果,將“1”,即當前執(zhí)行存儲器號寫入執(zhí)行存儲器保持部分134中。
3.在從指令序列1移位至指令序列2時的操作CPU 110輸出指令序列2的指令地址。按照前述方式進行處理,此時,第二比較裝置127的判斷結果和第一比較裝置123的判斷結果分別為肯定的和否定的。第二轉換器126按照前述相同的方式,根據指令序列2的前導地址,將CPU的指令地址轉換為用于存取第二E-存儲器116的地址。CPU 110按照前述方式,將從第二E-存儲器116讀取出的指令輸入其中,并執(zhí)行這些指令。
因為第二比較裝置127的判斷結果表示當前執(zhí)行的存儲器號為“2”,不同于保持在執(zhí)行存儲器保持部分134中的存儲器號“1”,改變檢測部分130向發(fā)送/接收單元114輸出指令重寫命令Sc,并將當前執(zhí)行的存儲器號“2”寫入執(zhí)行存儲器保持部分134中。
向主機傳輸指令重寫命令Sc,以便在執(zhí)行指令序列2的時間期間,將下一指令序列3存儲在第一E-存儲器115中,因為相對于第一E-存儲器115的指令讀取和執(zhí)行已經完成,并且已經對指令序列1的指令進行了處理。
發(fā)送/接收單元114向主機傳輸指令重寫命令Sc。主機在接收到指令重寫命令Sc時,按照前述方式,針對第一E-存儲器115,傳送和存儲下一個指令序列3。
當完成對指令序列2的讀取和執(zhí)行,并隨后開始指令序列3的讀取和執(zhí)行時,按照上述相同的方式,激活指令重寫命令Sc,向第二E-存儲器116傳送位于當前正在執(zhí)行的指令序列3之后的指令序列4,并存儲在第二E-存儲器116中。
按照前述方式,在第一E-存儲器115和第二E-存儲器116中交替地重復存儲指令。
如上所述,根據本實施例,在主機中,根據執(zhí)行序列,預先跟蹤指令,以便存儲指令序列的前導地址,從而向第一E-存儲器115和第二E-存儲器116傳送指令序列,并交替地存儲在第一E-存儲器115和第二E-存儲器116中。按照這種方式,有效地執(zhí)行了對E-存儲器的寫入,并能夠控制由于傳送業(yè)務量而導致的額外開銷,從而向CPU有效地提供指令。
本實施例描述了設置有兩個E-存儲器的情況。當設置至少三個E-存儲器時,可以降低在執(zhí)行指令的時間期間的指令傳送頻率。此外,在本實施例中,系統(tǒng)LSI和主機之間的通信采用串行方法,但是,也可以采用諸如并行方法之類的其它通信方法。
實施例2在實施例1中,當在E-存儲器的存儲容量的底線之前存在無條件分支指令時,則將已傳送指令的目的地切換到其它的E-存儲器,而不會使用所述E-存儲器的全部區(qū)域。因此,產生了由于傳送指令期間的業(yè)務量而導致的額外開銷。本發(fā)明的實施例2處理了這種不便。在實施例2中,將圖1一并作為參考。
如圖4所示,E-存儲器執(zhí)行監(jiān)督單元113a包括第一地址/字節(jié)數寄存器136,代替實施例1(圖2)中的第一寄存器124;以及第二地址/字節(jié)數寄存器138,代替其中的第二寄存器128。在以下的描述中,將第一地址/字節(jié)數寄存器縮寫為第一寄存器,以及將第二地址/字節(jié)數寄存器縮寫為第二寄存器。第一和第二寄存器136和138存儲來自寫入控制部分129a的前導地址和傳送字節(jié)數。參考數字135表示第一比較裝置,以及參考數字137表示第二比較裝置。以相同的數字表示圖4中與圖1中的組件等同的組件,并在本實施例中,不再對其進行描述。
主機除了指令及其前導地址外,還傳送指令序列的傳送字節(jié)數。寫入控制部分129a將從發(fā)送/接收單元輸入的前導地址和傳送字節(jié)數存儲在第一和第二寄存器136和138中。寫入控制部分129a,在遞增寫入地址的同時,還向第一選擇器121或第二選擇器125發(fā)送指令序列的指令。
第一比較裝置135將第一寄存器136的前導地址和傳送字節(jié)數以及CPU的指令地址輸入其中,從而判斷指令地址是否落入距前導地址傳送字節(jié)數的范圍內。第二比較裝置137將第二寄存器138的前導地址和傳送字節(jié)數以及CPU的指令地址輸入其中,從而判斷指令地址是否落入距前導地址傳送字節(jié)數的范圍內。
當第一比較裝置135的判斷結果為肯定的時,第一轉換器122根據第一寄存器136的前導地址和傳送字節(jié)數,將CPU的指令地址轉換為用于存取第一E-存儲器115的地址。當第二比較裝置137的判斷結果為肯定的時,第二轉換器126根據第二寄存器138的前導地址和傳送字節(jié)數,將CPU的指令地址轉換為用于存取第二E-存儲器116的地址。
對如上配置的調試器裝置的操作描述如下。圖5示出了從主機傳送過來的指令序列。每個指令序列中均具有無條件分支指令。
1.將指令寫入E-存儲器的操作主機根據執(zhí)行序列,從開始指令開始對指令進行跟蹤,按照無條件分支指令,將指令分為指令序列,并存儲指令序列的前導地址。主機還存儲指令序列的字節(jié)數,作為傳送字節(jié)數,并同樣針對任何其它指令序列。
主機通過發(fā)送/接收單元向寫入控制部分129a傳送指令序列1的指令、前導地址和傳送字節(jié)數。寫入控制部分129a將前導地址和傳送字節(jié)數寫入第一寄存器136中。第一選擇器121向第一E-存儲器115發(fā)送從寫入控制部分129a發(fā)出的地址。根據該地址,存取第一E-存儲器115,從而將從寫入控制部分129a發(fā)送過來的指令序列1的指令寫入其中。由第二寄存器138和第二選擇器125按照相同的方式處理指令序列2的指令、前導地址和傳送字節(jié)數,從而將指令序列2的指令寫入第二E-存儲器116中。
2.執(zhí)行指令序列1的操作CPU 110輸出指令序列1的指令地址。第一比較裝置135將CPU的指令地址與第一寄存器136的前導地址和傳送字節(jié)數輸入其中,并判斷CPU的指令地址是否對應于第一E-存儲器115的存儲器區(qū)域。此時,判斷結果是肯定的,并輸出到第一轉換器122。第一轉換器122根據指令序列1的前導地址和傳送字節(jié)數,將CPU的指令地址轉換為用于存取第一E-存儲器115的地址。相反,第二比較裝置137的判斷結果為否定,因此,第二轉換器126并不實現對指令地址的轉換。之后,CPU按照上述相同的方式,輸入從第一E-存儲器115讀出的指令,并執(zhí)行這些指令。將當前執(zhí)行的存儲器號“1”寫入執(zhí)行存儲器保持部分134中。
3.在通過無條件分支指令1進行分支時的操作當無條件分支指令1到達時,第一比較裝置135將判斷結果表示為否定,因為CPU的指令地址從第一寄存器136的指令序列1的前導地址起并未落入傳送字節(jié)數的范圍內。因此,第一轉換器122并不轉換指令地址。
相反,第二比較裝置137將判斷結果表示為肯定,因為CPU的指令地址落入從第二寄存器138的指令序列2的前導地址起的傳送字節(jié)數的范圍內。第二轉換器126將CPU的指令地址轉換為用于存取第二E-存儲器116的地址。之后,CPU按照上述相同的方式,輸入從第二E-存儲器116讀出的指令,并執(zhí)行這些指令。因為當前執(zhí)行的存儲器號“2”不同于執(zhí)行存儲器保持部分134中的“1”,改變檢測部分130傳輸指令重寫命令Sc。
主機在接收到指令重寫命令Sc時,向第一E-存儲器115傳送下一指令序列3,以便按照前述方式存儲在其中。
4.在通過無條件分支指令2進行分支時的操作當達到無條件分支指令2時,第二比較裝置137將判斷結果表示為否定,因為CPU的指令地址從第二寄存器138的指令序列2的前導地址起并未落入傳送字節(jié)數的范圍內。因此,第二轉換器126并不實現指令地址轉換。
相反,第一比較裝置135將判斷結果表示為肯定,因為CPU的指令地址從第一寄存器136的前導地址起落入傳送字節(jié)數的范圍內。第一轉換器122根據指令序列3的前導地址和傳送字節(jié)數,將CPU的指令地址轉換為用于存取第一E-存儲器115的地址。之后,CPU按照上述相同的方式,輸入從第一E-存儲器115讀出的指令,并執(zhí)行這些指令。當前執(zhí)行的存儲器號“1”不同于執(zhí)行存儲器保持部分134中的“2”,改變檢測部分130傳輸指令重寫命令Sc。
主機響應接收到的指令重寫命令Sc時,向第二E-存儲器116傳送下一指令序列4,以便按照前述方式存儲在其中。
在更新指令序列的同時,連續(xù)重復操作3和4。
如上所述,根據本實施例,主機根據執(zhí)行序列,預先跟蹤指令,存儲指令序列的前導地址和傳送字節(jié)數,并向獨立的E-存儲器傳送無條件分支之前的指令序列以及從無條件分支目的地指令向前的指令序列,以便存儲在其中。當執(zhí)行無條件分支指令時,實現對E-存儲器的切換。按照這種方式,控制了由于傳送業(yè)務量而導致的開銷,從而向CPU有效地提供指令。
本實施例描述了設置有兩個E-存儲器的情況,但是,當設置至少三個E-存儲器時,可以降低在執(zhí)行指令時的指令傳送頻率。此外,在本實施例中,系統(tǒng)LSI和主機之間的通信采用串行方法,但是,也可以采用諸如并行方法之類的其它通信方法。
實施例3在實施例2中,即使在指令序列1的無條件分支指令的分支目的地適合于相同的E-存儲器時,仍然將從分支目的地先前的指令寫入其它E-存儲器,作為指令序列2。因此,增加了由于傳送業(yè)務量而導致的額外開銷。本發(fā)明的實施例3處理了這種不便。在實施例3中,將圖1和4一并作為參考。
圖6示出了包括其分支目的地出現在E-存儲器中的無條件分支指令在內的指令序列。
1.將指令寫入E-存儲器的操作主機根據執(zhí)行序列,從開始指令開始對指令進行跟蹤,從而判斷分支目的地是否對應于無條件分支指令所出現的第一E-存儲器115的存儲器區(qū)域。當與之相對應時,主機并不將之后的指令區(qū)分為下一指令序列,而是作為指令序列1,對其繼續(xù)處理。當不與之相對應時,主機將到該點為止的字節(jié)數存儲為指令序列1的傳送字節(jié)數。按照相同的方式存儲指令序列2的前導地址和傳送字節(jié)數。
之后的操作與先前描述的相同,即,將等價于第一E-存儲器115的存儲器容量的指令序列1的指令寫入其中,并將等價于第二E-存儲器116的存儲器容量的指令序列2的指令寫入其中。
2.在通過無條件分支指令1進行分支時的操作
CPU輸出指令序列1的指令地址。當無條件分支指令1到達時,當前執(zhí)行的存儲器號“1”與執(zhí)行存儲器保持部分134的存儲器號,即“1”相同。因此,改變檢測部分130并不輸出指令重寫命令Sc。
當無條件分支指令2到達時,當前執(zhí)行存儲器號“2”不同于執(zhí)行的存儲器保持部分134的存儲器號,即“2”。因此,改變檢測部分130輸出指令重寫命令Sc。
如上所述,根據本實施例,當在主機中,根據執(zhí)行序列,預先跟蹤指令時,判斷其分支目的地是否屬于所述E-存儲器的存儲器容量。當判斷結果為肯定的時,則不作為不同的指令序列來處理分支目的地。按照這種方式,控制了由于傳送業(yè)務量而導致的額外開銷,從而向CPU有效地提供指令。
實施例4在實施例2中,在出現無條件分支指令時,可用對分支目的地的E-存儲器的內容進行重寫。但是,在通過子程序調用指令,從指令序列1分支到指令序列2的情況下,首先執(zhí)行指令序列2的分支,并隨后執(zhí)行來自子程序的恢復指令,然后,再次執(zhí)行指令序列1。在這種情況下,需要將指令序列1再次寫入E-存儲器,導致了由傳送業(yè)務量而引起的額外開銷的增加。本發(fā)明的實施例4解決了前述問題。在實施例4中,將圖1一并作為參考。
如圖7所示,本實施例與圖4所示的實施例2的不同之處在于其中設置有子程序分支保持部分(此后,縮寫為保持部分)140。保持部分140保持由寫入控制部分129b寫入的子程序分支信息,還保持在存取存儲器改變檢測部分(此后,縮寫為改變檢測部分)130b中改變的分支數。
主機傳送指令序列的指令、前導地址和傳送字節(jié)數以及指令序列的子程序分支信息。
寫入控制部分129b將從發(fā)送/接收單元輸入的前導地址和傳送字節(jié)數寫入第一和第二寄存器136和138中。寫入控制部分129b還將子程序分支信息寫入保持部分140,并向第一選擇器121或第二選擇器125發(fā)送指令。
改變檢測部分130b保持第一和第二比較裝置135和137的判斷結果,當判斷結果改變時,檢查保持部分140,從而當子程序分支信息的分支數為一或更大時,從子程序分支信息中減1,并在分支數為零時,向發(fā)送/接收單元輸出指令重寫命令Sc。
對如上配置的調試器裝置的操作描述如下。圖8示出了從主機傳送過來的指令序列。
1.將指令寫入E-存儲器的操作主機根據執(zhí)行序列,從開始指令開始對指令進行跟蹤,并在出現子程序調用指令時,存儲其分支目的地,作為子程序指令序列,以及其分支數。當到達無條件分支指令時,主機將到該點為止的字節(jié)數存儲為指令序列1的傳送字節(jié)數。
接下來,在如上述進行保持的子程序指令序列中,主機根據來自由CPU執(zhí)行的分支目的地指令1的執(zhí)行序列,跟蹤指令。當到達子程序恢復指令時,主機將直到該點為止的字節(jié)數存儲為指令序列2的傳送字節(jié)數。此外,主機存儲與指令序列3以及之后的指令序列有關的子程序調用指令的前導地址、傳送字節(jié)數、號碼。
主機通過發(fā)送/接收單元向寫入控制部分129b傳送指令序列1的指令、前導地址和傳送字節(jié)數。寫入控制部分129b將前導地址和傳送字節(jié)數寫入第一寄存器136中,并向第一選擇器121發(fā)送指令序列1。參照來自第一選擇器121的地址,對第一E-存儲器115進行存取,并將來自寫入控制部分129b的指令序列1的指令寫入其中。
接下來,主機通過發(fā)送/接收單元向寫入控制部分129b傳送指令、前導地址、傳送字節(jié)數和表示一次分支數的子程序分支信息,作為指令序列2。寫入控制部分129b將前導地址和傳送字節(jié)數寫入第二寄存器138,而將表示一次分支數的子程序分支信息寫入保持部分140中。在這種情況下,第二選擇器125向第二E-存儲器116發(fā)出由寫入控制部分129b發(fā)送過來的地址。根據該地址,對第二E-存儲器116進行存取,并從而,將由寫入控制部分129b發(fā)送過來的指令序列2的指令寫入。
保持部分140根據寫入控制部分129b的子程序分支信息,保持指令序列2對應于子程序的信息。
2.在通過子程序調用指令進行分支時的操作當子程序調用指令到達時,第一比較裝置135的判斷結果表示否定,因為CPU的指令地址從第一寄存器136的指令序列1的前導地址起并未落入傳送字節(jié)數的范圍內。因此,第一轉換器122并不轉換指令地址。
與此相反,第二比較裝置137的判斷結果表示肯定,因為CPU的指令地址從第二寄存器138的指令序列2的前導地址起落入傳送字節(jié)數的范圍內。因為第二比較裝置137的肯定判斷結果,第二轉換器126根據第二寄存器130的指令序列2的前導地址和傳送字節(jié)數,將CPU的指令地址轉換為用于存取第二E-存儲器116的地址。之后,CPU按照上述相同的方式,輸入從第二E-存儲器116讀出的指令,并執(zhí)行這些指令。
由于第一和第二比較裝置135和137的判斷結果改變,改變檢測部分130b檢查保持部分140。因為所保持的子程序分支信息顯示一次分支數,而非零,因此,并不輸出指令重寫命令Sc。結果,第一E-存儲器115保持指令序列1。改變檢測部分130b從保持部分140的分支數中減1,將其更新為零次。
3.在通過子程序恢復指令進行恢復時的操作在發(fā)生子程序恢復時,第二比較裝置137的判斷結果表示否定,因為CPU的指令地址并未落入從第二寄存器138的指令序列2的前導地址起的傳送字節(jié)數的范圍內。因此,第二轉換器126并不實現指令地址轉換。
同時,第一比較裝置135的判斷結果表示肯定,因為CPU的指令地址落入從第一寄存器136的前導地址起的傳送字節(jié)數的范圍內。因為第一比較裝置135的肯定判斷結果,第一轉換器122根據第一寄存器136的指令序列1的前導地址和傳送字節(jié)數,將CPU的指令地址轉換為用于存取第一E-存儲器115的地址。之后,CPU按照上述相同的方式,輸入從第一E-存儲器115讀出的指令,并執(zhí)行這些指令。
由于第一和第二比較裝置135和137的判斷結果改變,改變檢測部分130b檢查保持部分140。因為保持子程序分支信息示出了零次分支數,改變檢測部分130b向發(fā)送/接收單元輸出指令重寫命令Sc。在接收到指令重寫命令Sc時,主機通過發(fā)送/接收單元,向寫入控制部分129b傳送指令序列3的指令、前導地址和傳送字節(jié)數。寫入控制部分129b將前導地址和傳送字節(jié)數寫入第二寄存器138中。在這種情況下,通過第二選擇器125,將指令序列3的指令寫入第二E-存儲器116中。
接下來,在下面對如圖9所示的在子程序分支中對相同的二次指令序列2的操作進行描述。
1.將指令寫入E-存儲器的操作在圖8中,指令序列2的分支數是一次,而在圖9中,分支數是二次。因此,將二次分支數作為子程序信息寫入保持部分140。操作的其余部分與參照圖8進行描述的操作1相同。
2.在通過子程序調用指令進行分支時的操作當子程序調用指令到達時,改變檢測部分130b檢查保持部分140,并且由于所保持的分支數為二次,并不輸出指令重寫命令Sc。結果,第一E-存儲器115保持指令序列1。改變檢測部分130b從保持部分140的分支數中減1,將其更新為一次。
3.在通過子程序恢復指令進行恢復時的操作在發(fā)生子程序恢復時,改變檢測部分130b檢查保持部分140,并且由于所保持的分支數為一次,并不輸出指令重寫命令Sc。第一E-存儲器115保持指令序列1。改變檢測部分130b從保持部分140的分支數中減1,將其更新為零次。
在第二次程序分支時,因為保持部分的分支數為0,所以輸出指令重寫命令Sc,并從主機傳送下一指令序列的數據。
如上所述,根據本實施例,在通過子程序調用指令進行分支的情況下,保持子程序分支信息及其分支數。當通過子程序調用指令執(zhí)行分支時,并不改變分支起點中的指令序列。按照這種方式,控制了由重寫處理中的傳送業(yè)務量而引起的額外開銷,從而能夠向CPU有效地提供指令。
本實施例描述了設置有兩個E-存儲器的情況。當設置至少三個E-存儲器時,可以降低在執(zhí)行指令的時間期間的指令傳送頻率。此外,在本實施例中,系統(tǒng)LSI和主機之間的通信采用串行方法,但是,也可以采用諸如并行方法等之類的其它通信方法。
此外,在子程序分支目的地指令對應于E-存儲器的存儲器容量的情況下,可以通過實施例3中所述的主機,作為相同的指令序列,對其進行處理。
實施例5在實施例1到4中,當在執(zhí)行指令序列1期間實現了如中斷等例外處理時,在從例外處理恢復之后,再次執(zhí)行指令序列1,使其必須將指令序列1再次寫入E-存儲器。結果,增加了由于傳送業(yè)務量而引起的額外開銷。設計本發(fā)明的實施例5來響應這種不便。在實施例5中,將圖1一并作為參考。
如圖10所示,本實施例與圖4所示的實施例2的不同之處在于其中設置了例外處理保持部分(此后,縮寫為保持部分)143。保持部分143保持由寫入控制部分129c寫入的例外處理信息,并向改變檢測部分130c輸出所保持的信息。
主機與指令序列的指令、前導地址和傳送字節(jié)數一起傳送該指令序列的例外處理信息。
寫入控制部分129c將從發(fā)送/接收單元輸入的前導地址和傳送字節(jié)數寫入第一寄存器136或第二寄存器138,并將例外處理信息寫入保持部分143。寫入控制部分129c向第一選擇器121或第二選擇器125發(fā)出指令。
改變檢測部分130c保持第一和第二比較裝置135和137的判斷結果,并在判斷結果改變時,檢查保持部分143。改變檢測部分130c在不存在例外處理時,向發(fā)送/接收單元輸出指令重寫命令Sc。
對如上配置的調試器裝置的操作描述如下。圖11示出了從主機傳送過來的指令序列。
1.將指令寫入E-存儲器的操作主機根據執(zhí)行序列,對指令進行跟蹤,從中斷分支目的地中要執(zhí)行的開始指令到中斷恢復指令為止,并存儲指令序列2的前導地址。主機還處理指令序列的字節(jié)數,作為指令序列2的傳送字節(jié)數,并存儲例外處理信息。
接下來,主機根據執(zhí)行序列,從開始指令開始對指令進行跟蹤,并在出現無條件分支指令時,存儲到該點為止的字節(jié)數,作為指令序列1的傳送字節(jié)數。
主機通過發(fā)送/接收單元向寫入控制部分129c傳送指令序列1的指令、前導地址和傳送字節(jié)數。寫入控制部分129a將前導地址和傳送字節(jié)數寫入第一寄存器136中。依照來自第一選擇器121的地址,對第一E-存儲器115進行存取,并將指令序列1的指令寫入其中。
接下來,主機通過發(fā)送/接收單元向寫入控制部分129c傳送指令序列2的指令、前導地址、傳送字節(jié)數和例外處理信息。寫入控制部分129c將前導地址和傳送字節(jié)數寫入第二寄存器138,將例外處理信息寫入保持部分143。寫入控制部分129c通過第二選擇器125,向第二E-存儲器116發(fā)送指令序列2的指令。保持部分143保持由寫入控制部分129c寫入的指令序列2的例外處理信息。第二E-存儲器116輸入來自第二選擇器125的地址,并將指令序列2的指令寫入其中。
2.在產生中斷時的操作CPU接受中斷,并為了通過中斷分支目的地指令進行分支的目的,輸出指令地址。按照指令地址的變化,第一比較裝置135的判斷結果表示否定,而第二比較裝置137的判斷結果表示肯定。因此,第一轉換器122變?yōu)椴豢刹僮?,而第二轉換器126將CPU的指令地址轉換為用于存取第二E-存儲器116的地址。之后,CPU按照上述相同的方式,將從第二E-存儲器116讀出的指令輸入其中,并執(zhí)行這些程序。
改變檢測部分130c檢查保持部分143,并因為其中存儲了指令序列2的例外處理信息,不輸出指令重寫命令Sc。結果,第一E-存儲器115保持指令序列1。
3.在通過中斷恢復指令進行恢復時的操作CPU通過中斷恢復指令輸出中斷發(fā)生指令的指令地址。響應指令地址的變化,第二比較裝置137的判斷結果為否定的,而第一比較裝置135的判斷結果為肯定的。結果,第二轉換器126變?yōu)椴豢刹僮?,而第一轉換器122將CPU的指令地址轉換為用于存取第一E-存儲器115的地址。之后,CPU按照上述相同的方式,將從第一E-存儲器115讀出的指令輸入其中,并執(zhí)行這些程序。
改變檢測部分130c檢查保持部分140,而因為其中未存儲例外處理信息,向發(fā)送/接收單元輸出指令重寫命令Sc。主機在接收到指令重寫命令Sc時,傳送下一指令序列的數據。
如上所述,根據本實施例,當產生如中斷等例外處理時,保持例外處理的信息。在通過例外處理進行分支的情況下,對分支起點中的指令序列加以控制,使其不變。按照這種方式,控制了由于重寫處理中的傳送業(yè)務量而引起的額外開銷,從而向CPU有效地提供指令。
在本實施例中,E-存儲器之一專用于例外處理,使得只有一個E-存儲器能夠用于任何正常的處理。結果,通過分支產生了開銷。為了解決此問題,設置至少三個E-存儲器可以避免額外開銷的產生。
此外,在本實施例中,系統(tǒng)LSI和主機之間的通信采用串行方法,但是,也可以采用諸如并行方法等之類的其它通信方法。
實施例6在實施例1到5中,當指令序列包括條件分支指令時,所執(zhí)行的處理根據條件分支指令的建立或失敗而變化。在條件分支指令被建立的假設下,已經將指令目的地的指令序列寫入E-存儲器中。因此,在建立時,不必將分支目的地的指令序列寫入E-存儲器。當未建立時,自然需要以不同的指令序列對其進行重寫,在此處理期間,增加了由于傳送業(yè)務量而導致的額外開銷。提出本發(fā)明的實施例6,以處理這種不便。在本實施例中,將圖1一并作為參考。
如圖12所示,本實施例與圖4所示實施例2的不同之處在于其中設置有分支處理保持部分(此后,縮寫為保持部分)146和第三比較裝置147。保持部分146保持由寫入控制部分129d寫入的條件分支指令,并向第三比較裝置147輸出條件分支指令的地址。第三比較裝置147將保持部分146的條件分支指令的地址與CPU的指令地址進行比較,并在地址彼此等同時,向改變檢測部分130d輸出分支指令執(zhí)行信息。
主機傳送指令序列的條件分支指令的地址以及指令序列的指令、前導地址和傳送字節(jié)數。
寫入控制部分129d將從發(fā)送/接收單元輸入的前導地址和傳送字節(jié)數寫入第一寄存器136或第二寄存器138,并將條件分支指令的地址寫入保持部分146。然后,寫入控制部分129d向第一選擇器121或第二選擇器125發(fā)送指令。
改變檢測部分130d將第三比較裝置147的分支指令執(zhí)行信息輸入其中,并當在執(zhí)行指令的下一循環(huán)中分支建立時,將指令重寫命令Sc設置為第一狀態(tài),對分支起點中的指令序列進行重寫,并向發(fā)送/接收單元輸出該命令。當在下一執(zhí)行循環(huán)中不會建立分支時,改變檢測部分130d將指令重寫命令Sc設置為第二狀態(tài),重寫分支目的地中的指令序列,并向發(fā)送/接收單元輸出該命令。
對如上配置的調試器裝置的操作描述如下。圖13示出了從主機傳送過來的指令序列。
1.將指令寫入E-存儲器的操作主機根據執(zhí)行序列,從開始指令開始對指令進行跟蹤,并執(zhí)行與前述相同的處理。在出現條件分支指令時,主機還存儲條件分支指令的地址,并將分支目的地保持為條件分支建立指令序列。
接下來,主機根據執(zhí)行序列跟蹤如上述序列保持的條件分支建立指令序列中的指令,并存儲指令序列2的前導地址。主機將指令序列的字節(jié)數認定為指令序列2的傳送字節(jié)數,并存儲條件分支建立指令信息。主機還存儲指令序列3和之后指令序列的前導地址和傳送字節(jié)數。
主機通過發(fā)送/接收單元向寫入控制部分129d傳送指令序列1中的指令、前導地址列1的條件分支指令的地址、傳送字節(jié)數。寫入控制部分129d將前導地址和傳送字節(jié)數存儲在第一寄存器136中,并將條件分支指令的地址寫入保持部分146。根據來自第一選擇器121的地址,對第一E-存儲器115進行存取,并將來自寫入控制部分129d的指令序列1的指令寫入其中。保持部分146保持由寫入控制部分129d寫入的條件分支指令的地址。
接下來,主機按照相同的方式執(zhí)行對指令序列2的相同處理,并將指令序列2的指令寫入第二E-存儲器116。
2.在建立指令序列1的分支指令時的操作CPU執(zhí)行指令序列及其條件分支指令1。第三比較裝置147將保持部分146的條件分支指令的地址與CPU的指令地址進行比較。因為此時,兩個地址彼此等同,第三比較裝置147向改變檢測部分130d輸出分支指令執(zhí)行信息。
在執(zhí)行指令的下一循環(huán)期間,建立指令序列1的條件分支指令。因此,CPU輸出指令序列2的分支目的地指令1的指令地址。根據指令地址的改變,第一比較裝置135將判斷結果表示為否定的,而第二比較裝置137將判斷結果表示為肯定的。結果是,第一轉換器122變?yōu)椴豢刹僮鳎诙D換器126將CPU的指令地址轉換為用于存取第二E-存儲器116的地址。之后,CPU按照上述相同的方式,將從第二E-存儲器116讀出的指令輸入其中,并執(zhí)行這些程序。
改變檢測部分130d根據第一和第二比較裝置135和137的判斷結果,判斷分支被建立,并將指令重寫命令Sc設置為第一狀態(tài),將分支起點中的指令序列1重寫入指令序列4,并向發(fā)送/接收單元輸出。因此,將指令序列4寫入第一E-存儲器115中。
3.在未建立指令序列1的條件分支指令時的操作CPU執(zhí)行指令序列及其條件分支指令1。第三比較裝置147將保持部分146的條件分支指令的地址與CPU的指令地址進行比較。因為此時,兩個地址彼此等同,第三比較裝置147向改變檢測部分130d輸出分支指令執(zhí)行信息。
在下一個執(zhí)行循環(huán)中,指令序列1的條件分支指令并未建立。因此,CPU輸出指令序列1中、條件分支指令之后的指令的指令地址。根據該地址的改變,第一比較裝置135將判斷結果表示為肯定,而第二比較裝置137將判斷結果表示為否定。改變檢測部分130d根據第一和第二比較裝置135和137的判斷結果,判斷分支未被建立,并將指令重寫命令Sc設置為第二狀態(tài),將分支目的地中的指令序列2重寫入指令序列3,并向發(fā)送/接收單元輸出。因此,將指令序列3寫入第一E-存儲器115中。
如上所述,當指令序列包括條件分支指令時,根據條件分支指令的建立或失敗,條件目的地指令序列變得必要或不必要。因此,只將不必要的指令序列重寫入下一個必要的指令序列,從而控制了在重寫處理中,由于傳送業(yè)務量而導致的額外開銷,從而向CPU有效地提供指令。
此外,當條件分支指令對應于E-存儲器的存儲器容量時,可以通過實施例3中所描述的主機,作為等同指令序列來處理指令序列。
實施例7在實施例6的情況下,當在指令序列中包括多個條件分支時,相對于隨后執(zhí)行的指令序列,來自主機的傳送業(yè)務量變得繁忙。這導致了在重寫指令序列時,由于傳送業(yè)務量而導致的額外開銷的增加。本發(fā)明的實施例7響應這種不便。在實施例7中,將圖1一并作為參考。
如圖14所示,本實施例與圖12所示的實施例6的不同之處在于其中設置有分支處理保持器FIFO 151。FIFO 151根據寫入順序,保持由寫入控制部分129e寫入的多條條件分支指令的地址,并向第三比較裝置147e輸出前級中的條件分支指令的地址。此外,FIFO 151在第三比較裝置147e的判斷結果表示等同時,向前一級逐一移位所保持的條件分支指令的地址。第三比較裝置147e將FIFO 151的條件分支指令的地址與CPU的指令地址進行比較,并在其彼此等同時,向改變檢測部分130e和FIFO 151輸出分支指令執(zhí)行信息。
寫入控制部分129e將來自發(fā)送/接收單元的指令序列中的指令、前導地址、傳送字節(jié)數、和多條條件分支指令的地址輸入其中,并將前導地址和傳送字節(jié)數寫入第一寄存器136或第二寄存器138,以及將多條條件指令的地址寫入FIFO 151。然后,寫入控制部分129e向第一選擇器121或第二選擇器125發(fā)送指令。
改變檢測部分130e將第三比較裝置147e的分支指令執(zhí)行信息輸入其中,并當在下一個執(zhí)行循環(huán)中建立分支時,將指令重寫命令Sc設置為第一狀態(tài),重寫分支起點中的指令序列,并向發(fā)送/接收單元輸出。改變檢測部分130e還對FIFO 151中的任何數值進行重置,并當在下一個執(zhí)行循環(huán)中未建立分支時,將指令重寫命令Sc設置為第二狀態(tài),重寫分支目的地中的指令序列,并向指令重寫命令Sc輸出。
對如上配置的調試器裝置的操作描述如下。圖15示出了從主機傳送過來的指令序列。
1.將指令寫入E-存儲器的操作主機根據執(zhí)行序列,從開始指令開始對指令進行跟蹤。在出現兩條條件分支指令時,主機存儲其相應的地址,并將分支目的地保持為條件分支建立指令序列。除前述之外,主機執(zhí)行與前述相同的處理。
接下來,主機根據執(zhí)行的次序,跟蹤指令,從分支目的地指令1和分支目的地指令2開始,由CPU在兩個所保持的條件分支建立指令序列中執(zhí)行。主機存儲指令序列2和3的前導地址,并存儲指令序列2和3的傳送字節(jié)數及其各自的條件分支建立指令信息。主機還存儲指令序列4及之后指令序列的前導地址和傳送字節(jié)數。
主機通過發(fā)送/接收單元向寫入控制部分129e傳送指令序列1中的指令、條件分支指令1的傳送字節(jié)數和分支指令地址、以及條件分支指令2的傳送字節(jié)數和分支指令地址。寫入控制部分129e將前導地址和傳送字節(jié)數存儲在第一寄存器136中。寫入控制部分129e將條件分支指令1的分支指令地址和條件分支指令2的分支指令地址順序寫入FIFO 151。
按照相同的方式,將指令序列1的指令寫入第一E-存儲器115中,并將指令序列2的指令寫入第二E-存儲器116中。
2.在執(zhí)行指令序列1的條件分支指令1并因此建立分支時的操作CPU執(zhí)行指令序列及其條件分支指令1。第三比較裝置147e將FIFO 151的條件分支指令1的分支指令地址與CPU的指令地址進行比較。因為此時,兩個地址彼此等同,CPU向改變檢測部分130e輸出分支指令執(zhí)行信息。
在下一個執(zhí)行循環(huán)中,因為指令序列1的條件分支指令1的條件分支指令被建立,CPU隨后輸出指令序列2的分支目的地指令1的指令地址。根據指令地址的改變,第一比較裝置135的判斷結果表示否定,而第二比較裝置137的判斷結果表示肯定。結果是,第一轉換器122變?yōu)椴豢刹僮?,而第二轉換器126將CPU的指令地址轉換為用于存取第二E-存儲器116的地址。之后,CPU按照上述相同的方式,將從第二E-存儲器116讀出的指令輸入其中,并執(zhí)行這些程序。
改變檢測部分130e根據第一和第二比較裝置135和137的判斷結果,判斷分支被建立,并將指令重寫命令Sc設置為第一狀態(tài),將分支起點中的指令序列1重寫入指令序列2之后的指令序列(未示出),并向發(fā)送/接收單元輸出。因為分支被建立,改變檢測部分130e重置存儲在FIFO 151中的任何數值。
3.在執(zhí)行指令序列1的條件分支指令1,導致分支失敗,而執(zhí)行其條件分支指令2,導致分支的建立時的操作CPU執(zhí)行指令序列1及其條件分支指令1。第三比較裝置147e將FIFO 151的條件分支指令1的分支指令地址與CPU的指令地址進行比較。因為此時,兩個地址彼此等同,第三比較裝置147e向改變檢測部分130e輸出分支指令執(zhí)行信息。
在下一個執(zhí)行循環(huán)中,因為指令序列1的條件分支指令1的條件分支指令并未建立,CPU輸出條件分支指令1之后的指令的指令地址。第一比較裝置135的判斷結果保持肯定,而第二比較裝置137的判斷結果表示否定,并將指令重寫命令Sc設置為第二狀態(tài),將分支目的地中的指令序列2重寫入指令序列3,并向發(fā)送/接收單元輸出。FIFO 151向前一級逐一移位當第三比較裝置147e的判斷結果表示等同時所保持的條件分支指令的地址。前級中的地址變?yōu)闂l件分支指令2的地址。CPU執(zhí)行指令序列1及其條件分支指令2。第三比較裝置147e將FIFO151的條件分支指令2的分支指令地址與CPU的指令地址進行比較。因為這兩個地址彼此等同,第三比較裝置147e向改變檢測部分130e輸出分支指令執(zhí)行信息。
在下一執(zhí)行循環(huán)中,因為指令序列1的條件分支指令2的條件分支指令被建立,CPU隨后輸出指令序列2的分支目的地指令1的指令地址。根據指令地址的改變,第一比較裝置135的判斷結果表示否定,而第二比較裝置137的判斷結果表示肯定。結果是,第一轉換器122變?yōu)椴豢刹僮?,而第二轉換器126將CPU的指令地址轉換為用于存取第二E-存儲器116的地址。
改變檢測部分130e根據第一和第二比較裝置135和137的判斷結果,判斷分支被建立,并將指令重寫命令Sc設置為第一狀態(tài),將分支起點中的指令序列1重寫入要指令序列3之后被執(zhí)行的指令序列,并向發(fā)送/接收單元輸出。因為分支被建立,改變檢測部分130e重置存儲在FIFO 151中的任何數值。結果,將指令序列3寫入第二E-存儲器116。
4.在執(zhí)行指令序列1的條件分支指令1,導致分支失敗,而執(zhí)行其條件分支指令2,導致分支的建立時的操作在執(zhí)行指令序列1的條件分支指令1,導致分支失敗時的操作與3的描述相同。此外,因為指令序列1的條件分支指令2的條件分支指令并未被建立,則輸出條件分支指令2的下一個指令的指令地址。第一比較裝置135的判斷結果是肯定的,而第二比較裝置137的判斷結果是否定的。改變檢測部分130e根據第一和第二比較裝置135和137的判斷結果,判斷分支未被建立,并將指令重寫命令Sc設置為第二狀態(tài),將分支目的地中的指令序列3重寫入指令序列4,并向發(fā)送/接收單元輸出。FIFO 151向前一級逐一移位當第三比較裝置147e的判斷結果表示等同時所保持的條件分支指令的地址,并清除了保持在前級中的地址。因此,將指令序列4寫入第二E-存儲器116。
如上所述,當指令序列包括多個條件分支時,將多條條件分支指令的地址保持在FIFO中,每當未建立分支時,實現移位,而在建立分支時,清除FIFO的內容。這樣控制了在重寫指令序列時,由于傳送業(yè)務量而引起的額外開銷,以便處理多個分支的建立/失敗,從而向CPU有效地提供指令。
在條件分支指令對應于E-存儲器的存儲器容量的情況下,可以通過實施例3中所描述的主機,作為等同指令序列來處理指令序列。
實施例8在實施例6和7中,根據條件分支指令的建立或失敗,分支目的地中的指令序列或條件分支指令之后的指令序列可能會變得不必要。在這種情況下,增加了在重寫指令時,由傳送業(yè)務量而引起的額外開銷。本發(fā)明的實施例8響應此問題。在實施例8中,將圖1和14一并作為參考。
主機是包括調試器裝置的計算機,所述調試器裝置具有以下功能通過預先實現對由CPU執(zhí)行的指令序列的仿真,經常預報CPU的寄存器0的數值。
對如上配置的調試器裝置的操作描述如下。如圖16和17所示,在主機中,預先實現對由CPU執(zhí)行的指令序列的仿真,從而經常預報寄存器0的數值,在完成仿真之后,從主機傳送該數值。
1.在主機仿真由CPU執(zhí)行的指令、并建立條件分支指令1的分支時的寫入指令的操作在跟蹤指令的同時,主機預先實現對由CPU執(zhí)行的指令序列的仿真,及前述處理。為此,預報在執(zhí)行指令序列1的指令時寄存器0的數值,如圖16所示。此時,預報條件分支指令1被建立。
執(zhí)行監(jiān)督單元將指令序列1的指令寫入第一E-存儲器115,并將指令序列2的指令寫入第二E-存儲器116。
2.在主機仿真由CPU執(zhí)行的指令、且未建立條件分支指令1的分支時的寫入指令的操作在跟蹤指令的同時,主機預先實現對由CPU執(zhí)行的指令序列的仿真,及前述處理。為此,預報在執(zhí)行指令序列1的指令時寄存器0的數值,如圖16所示。此時,預報條件分支指令1未被建立。
3.條件分支指令1的操作,其中CPU執(zhí)行在操作1中所寫入的指令CPU執(zhí)行指令序列1及其條件分支指令1。第三比較裝置147e將FIFO 151的條件分支指令1的分支指令地址與CPU的指令地址進行比較。由于此時兩個地址彼此相同,CPU向改變檢測部分1 30e輸出分支指令執(zhí)行信息。
在下一個執(zhí)行循環(huán)中,CPU在建立指令序列1的條件分支指令1的條件分支指令之后,輸出指令序列2的分支目的地指令1的指令地址。第一比較裝置135將判斷結果表示為否定,而第二比較裝置137將判斷結果表示為肯定。第二轉換器126將CPU的指令地址轉換為用于存取第二E-存儲器116的地址。之后,CPU按照上述相同的方式,輸入從第二E-存儲器116讀出的指令,并執(zhí)行這些指令。
改變檢測部分130e根據第一比較裝置135和137的判斷結果,判斷分支被建立,并將指令重寫命令Sc設置為第一狀態(tài),將分支起點中的指令序列1重寫入指令序列2之后的指令序列(未示出)中,并向發(fā)送/接收單元輸出。由于分支被建立,改變檢測部分130e重置存儲在FIFO 151中的任意數值。
4.條件分支指令1的操作,其中CPU執(zhí)行在操作2中所寫入的指令CPU執(zhí)行指令序列1及其條件分支指令1。FIFO 151未保持條件分支指令1的分支指令地址。第一比較裝置135的判斷結果是肯定,而第二比較裝置137的判斷結果是否定。第一轉換器122將CPU的指令地址轉換為用于存取第一E-存儲器115的地址。之后,CPU按照前述的方式,將從第一E-存儲器115讀出的指令輸入其中,并執(zhí)行這些指令。
改變檢測部分130e并未將條件分支指令1識別為分支指令,因此,并未輸出指令重寫命令Sc。
如上所述,根據本實施例,當在主機中預先跟蹤要執(zhí)行的指令時,實現對指令序列的仿真,從而檢查內部寄存器的數值,從而預報分支是否被建立。這樣做,控制了由于重寫指令序列以處理條件分支的建立/失敗時的傳送業(yè)務量所引起的開銷,從而向CPU有效地提供指令。
實施例9在實施例1到8中,根據對來自程序的各個指令的行為的分析,重寫E-存儲器的內容。在這種情況下,即使E-存儲器具有足夠的容量來存儲OS的一個或多個任務,仍然增加了由于重寫時的傳送業(yè)務量而導致的額外開銷。本發(fā)明的實施例9用于解決此問題。在實施例9中,將圖1一并作為參考。
如圖18所示,E-存儲器執(zhí)行監(jiān)督單元113f包括任務切換檢測部分154和執(zhí)行任務保持部分155。
任務切換檢測部分154根據第一和第二比較裝置135和137的判斷結果,將當前執(zhí)行任務號寫入執(zhí)行任務保持部分(此后,縮寫為保持部分)155。在根據第一和第二比較裝置135和137的判斷結果,當前執(zhí)行任務號與保持部分155的任務號互不相同時,任務切換檢測部分154向發(fā)送/接收單元輸出指令重寫命令Sc。保持部分155保持任務號1,作為初始值,并保持由任務切換檢測部分154寫入的當前執(zhí)行任務號,從而向任務切換檢測部分154輸出所保持的任務號。
對如上配置的調試器裝置的操作描述如下。圖19示出了從主機傳送過來的指令序列。
1.將指令寫入E-存儲器的操作主機按照OS的任務區(qū)分程序,并根據執(zhí)行序列,從CPU所執(zhí)行的任務中的開始指令到最終指令,對指令進行跟蹤。主機存儲第一地址,作為任務1的前導地址,并存儲所跟蹤任務的字節(jié)數,作為任務1的字節(jié)數。接下來,主機按照與任務1相同的方式,處理任務2,并存儲前導地址及其傳送字節(jié)數。對任意其它任務,實施相同的處理。
主機通過發(fā)送/接收單元向寫入控制部分129f傳送任務1的指令、前導地址和傳送字節(jié)數。寫入控制部分129f將前導地址和傳送字節(jié)數寫入第一寄存器136,并向第一選擇器121傳輸任務1的指令。第一E-存儲器115將來自第一選擇器121的地址輸入其中,從而將任務1的指令寫入其中。
主機通過發(fā)送/接收單元向寫入控制部分129f傳送任務2的指令、前導地址和傳送字節(jié)數。寫入控制部分129f將前導地址和傳送字節(jié)數寫入第二寄存器138,并向第二選擇器125傳輸任務2的指令。第二E-存儲器116將來自第二選擇器125的地址輸入其中,從而將任務2的指令寫入其中。
2.在CPU執(zhí)行任務1時的操作CPU輸出任務1的指令地址。第一比較裝置135的判斷結果表示肯定,而第二比較裝置137的判斷結果表示否定。由于第一比較裝置135的判斷結果表示肯定,第一轉換器122將CPU的指令地址轉換為用于存取第一E-存儲器115的地址。之后,CPU按照前述方式輸入從第一E-存儲器115讀出的指令,并執(zhí)行這些指令。
任務切換檢測部分154根據第一和第二比較裝置135和137的判斷結果,將當前執(zhí)行任務號1寫入保持部分155,且不輸出指令重寫命令Sc,因為根據第一和第二比較裝置135和137的判斷結果,當前執(zhí)行任務號1與保持部分155的任務號彼此相同。
3.當CPU從任務1轉移到任務2時的操作CPU輸出任務2的指令地址。第一比較裝置135的判斷結果為否定,而第二比較裝置137的判斷結果為肯定。第二轉換器126將CPU的指令地址轉換為用于存取第二E-存儲器116的地址。之后,CPU按照前述方式輸入從第二E-存儲器116讀出的指令,并執(zhí)行這些指令。
任務切換檢測部分154向發(fā)送/接收單元輸出指令重寫命令Sc,因為根據第一和第二比較裝置135和137的判斷結果,當前執(zhí)行任務號2與保持部分155的任務號1彼此不同。任務切換檢測部分154將當前執(zhí)行任務號2寫入保持部分155。
在通過發(fā)送/接收單元接收到指令重寫命令Sc之后,主機通過發(fā)送/接收單元向寫入控制部分129f傳送任務3的指令、前導地址和傳送字節(jié)數。寫入控制部分129f將任務3的前導地址和傳送字節(jié)數寫入第一寄存器136,并向第一選擇器121發(fā)出任務3的指令。第一E-存儲器115將來自第一選擇器121的地址輸入其中,并將任務3的指令寫入其中。
如上所述,根據本實施例,在主機中,按照OS的任務,預先區(qū)分指令序列,從而向E-存儲器傳送每個任務的指令序列,以存儲在其中。彼此間切換E-存儲器,從而控制了由于傳送業(yè)務量而導致的額外開銷,并向CPU有效地提供指令。
在本實施例中,檢測任務的前導地址,以便檢測任務的切換,從而切換并重寫E-存儲器??梢皂憫獜腃PU或主機輸入的任務切換信號,來彼此間切換E-存儲器。
實施例10在實施例1到9中,在將程序寫入主機中的E-存儲器中時,分析了指令的分支中的行為。這產生了由于分析所消耗的時間量而導致的額外開銷。本發(fā)明的實施例10解決了前述問題。
主機是包括調試器軟件的計算機,所述調試器軟件具有以下功能根據樹結構,分析由CPU執(zhí)行的指令序列的分支信息,并存儲分支指令的類型和地址等。
對如上配置的調試器裝置的操作描述如下。圖20示出了與主機中所產生的分支有關的樹結構。
1.主機產生與分支有關的樹結構的操作主機從要被最先執(zhí)行的開始指令開始跟蹤所有要執(zhí)行的指令。在跟蹤時,檢測其中產生了諸如條件分支指令和無條件分支指令等對程序控制的干擾的斑點(spot)。將所檢測到的斑點的節(jié)點部分的地址和節(jié)點部分之間的字節(jié)數存儲為樹結構。
2.由CPU執(zhí)行的操作主機根據所產生的樹結構,通過發(fā)送/接收單元,向執(zhí)行監(jiān)督單元傳送前導地址1和從開始地址開始的字節(jié)數1及其之間的指令。執(zhí)行監(jiān)督單元將與該字節(jié)數相等的指令寫入第一E-存儲器115。
接下來,主機根據樹結構,通過發(fā)送/接收單元,向執(zhí)行監(jiān)督單元傳送前導地址2和從開始地址開始的字節(jié)數2及其之間的指令。執(zhí)行監(jiān)督單元將與該字節(jié)數相等的指令寫入第二E-存儲器116。
此后,CPU依照實施例1到9中所描述的操作,從第一E-存儲器115或第二E-存儲器116取出指令,并執(zhí)行這些指令。
如上所述,根據本實施例,在主機中預先跟蹤所有要執(zhí)行的指令,檢測對程序控制產生干擾的斑點,并將所檢測到的斑點的節(jié)點部分的地址及節(jié)點間的字節(jié)數存儲為樹結構。這樣控制了由于在寫入指令時對行為的分析而導致的額外開銷,從而向CPU有效地提供指令。
實施例11在實施例2到10中,在按照分支指令,將指令寫入E-存儲器時,從分支指令出現向前的一些指令可能仍未被寫入。因此,在使用存儲器空間時,在某些情況下產生存儲器空間的短缺,而在其他情況下,并未使用存儲器空間。這種不平衡成為有效使用E-存儲器的障礙。本發(fā)明的實施例11響應這種不便。
圖21是示出了根據實施例11的調試器裝置的結構的方框圖。
系統(tǒng)LSI 101g包括單一的E-存儲器158。
如圖22所示,執(zhí)行監(jiān)督單元113g包括地址選擇器161、地址轉換器162、比較裝置163、地址/字節(jié)數寄存器(此后,縮寫為寄存器)164、寫入控制部分129g、存取存儲器改變檢測部分130g、寫入地址轉換器168、以及寫入地址/字節(jié)數寄存器(此后,縮寫為寫入寄存器)169。因為設置了單一的E-存儲器158,同樣單一地設置了比較裝置163、地址轉換器162和地址選擇器161。在根據本實施例的結構中并未設置數據選擇器和邏輯和電路。
寫入控制部分129g從發(fā)送/接收單元,將指令序列的指令、寫入前導地址、前導地址和傳送字節(jié)數輸入其中,并將E-存儲器的寫入前導地址寫入寫入寄存器169中,將前導地址和傳送字節(jié)數寫入寄存器164中,并向E-存儲器158發(fā)出指令序列的指令。此外,寫入控制部分129g在從比較裝置163將CPU的指令地址不相關的判斷結果輸入其中時,從發(fā)送/接收單元輸入下一個前導地址和傳送字節(jié)數,并將其寫入寄存器164中。
寫入寄存器169將來自寫入控制部分129g的E-存儲器158的寫入前導地址和傳送字節(jié)數保存在其中。
寫入地址轉換器168根據相應的轉換字節(jié)數,將寫入寄存器169的寫入地址轉換為用于對E-存儲器158進行寫入的地址。
在比較裝置163的判斷結果表示肯定時,地址轉換器162根據寫入寄存器169的寫入前導地址和傳送字節(jié)數以及寄存器164的前導地址和傳送字節(jié)數,將CPU的指令地址轉換為用于存取E-存儲器158的地址。
地址選擇器161在對E-存儲器158進行寫入的情況下,選擇從地址轉換器168發(fā)出的地址,而在其他情況下,選擇從地址轉換器162發(fā)出的地址。
對如上配置的調試器裝置的操作描述如下。圖23示出了從主機102g傳送過來的指令序列。
1.將指令寫入E-存儲器的操作主機根據執(zhí)行序列,從開始指令開始對指令進行跟蹤,并在出現無條件分支指令時,存儲所跟蹤的第一地址,作為指令序列1的前導地址,并存儲指令序列的字節(jié)數,作為指令序列1的傳送字節(jié)數。主機還存儲指令序列2、3以及其后指令序列的前導地址和傳送字節(jié)數。
主機將E-存儲器的寫入前導地址設置為初始值。主機向寫入控制部分129g傳送指令序列1的指令、前導地址、傳送字節(jié)數和寫入前導地址。
寫入控制部分129g將指令序列1的寫入前導地址寫入該寫入寄存器169中,將指令序列1的前導地址和傳送字節(jié)數寫入寄存器164中,并向E-存儲器158傳送指令序列1的指令。寫入地址轉換器168根據寫入寄存器169的指令序列1的前導地址和傳送字節(jié)數,將前導地址轉換為用于對E-存儲器158進行寫入的地址。E-存儲器158輸入來自地址選擇器161的地址,從而將指令序列1的指令寫入其中。
按照相同的方式,將指令序列2及其后指令序列的指令寫入E-存儲器158中。
當完成寫入時,主機通過發(fā)送/接收單元向寫入控制部分129g再次傳送指令序列1的寫入前導地址。寫入控制部分129g將指令序列1的寫入前導地址寫入寫入寄存器169中。
2.在通過無條件分支指令1進行分支時的操作CPU輸出指令序列1的指令地址。響應無條件分支指令1的到達,比較裝置163輸出CPU的指令地址并未落入距寄存器164的前導地址傳送字節(jié)數的范圍內的判斷結果。改變檢測部分130g向發(fā)送/接收單元輸出地址重寫命令Sd,因為來自比較裝置163的判斷結果為否定的。
結果,在與上述相同的步驟中,從主機接收到指令序列2的寫入前導地址、前導地址和傳送字節(jié)數,將指令序列2的寫入前導地址寫入寫入寄存器169,并將指令序列2的前導地址和傳送自己數寫入寄存器164。
比較裝置163輸出CPU的指令地址落入從寄存器164的前導地址起的傳送字節(jié)數的范圍內的判斷結果。由于比較裝置163的判斷結果表示肯定,地址轉換器162根據寫入寄存器169的寫入前導地址以及寄存器164的前導地址和傳送字節(jié)數,將CPU的指令地址轉換為用于存取E-存儲器158的地址。來自比較裝置163的表示肯定的輸出構成了選擇器112的選擇信號Se,用于選擇執(zhí)行監(jiān)督單元113g的輸出(用于對E-存儲器進行讀取的指令)。之后,CPU按照相同的方式,輸入從E-存儲器158讀出的指令,并執(zhí)行這些指令。
如上所述,根據本實施例,當CPU的指令地址變得不相關時,從主機接收下一指令序列的寫入前導地址、前導地址和傳送字節(jié)數。按照這種方式,能夠在連續(xù)的空間中,執(zhí)行對單一E-存儲器的寫入,從而有效地利用了E-存儲器。
實施例12在實施例11中,針對每個分支,從主機傳送地址和傳送字節(jié)數,導致了額外開銷的產生。本發(fā)明的實施例12響應該問題。在實施例12中,將圖21一并作為參考。
如圖24所示,E-存儲器執(zhí)行監(jiān)督單元113h包括第一寫入地址/字節(jié)數寄存器(此后,縮寫為第一寫入寄存器)172、第二寫入地址/字節(jié)數寄存器(此后,縮寫為第二寫入寄存器)173、第一地址/字節(jié)數寄存器(此后,縮寫為第一寄存器)174、以及第二地址/字節(jié)數寄存器(此后,縮寫為第二寄存器)175。圖24中等同于圖22中的部件的其他部件具有相同的參考數字,并在本實施例中不再進行描述。
寫入控制部分129h將來自發(fā)送/接收單元的指令、對于E-存儲器的寫入前導地址和指令序列的傳送字節(jié)數輸入其中,并將對于E-存儲器的寫入前導地址寫入第一寫入寄存器172或第二寫入寄存器173中,并將前導地址和傳送字節(jié)數寫入第一寄存器174或第二寄存器175。寫入控制部分129h向E-存儲器158發(fā)出指令序列的指令,并在從比較裝置163將CPU的指令地址不相關的判斷結果輸入其中時,將來自發(fā)送/接收單元的前導地址和傳送字節(jié)數輸入其中。寫入控制部分129h將寫入前導地址寫入第二寫入寄存器173中,并將前導地址和傳送字節(jié)數寫入第二寄存器175中。
在比較裝置163的判斷結果表示否定時,第一寄存器174將其內容更新為第二寄存器175的數值。
在比較裝置163的判斷結果表示否定時,第一寫入寄存器172將其內容更新為第二寫入寄存器173的寫入前導地址和傳送字節(jié)數。
在比較裝置163的判斷結果表示否定時,改變檢測部分130h向發(fā)送/接收單元輸出地址重寫命令Sd。
對如上配置的調試器裝置的操作描述如下。圖23示出了從主機傳送過來的指令序列。
1.將指令寫入E-存儲器的操作主機根據執(zhí)行序列,從開始指令開始對指令進行跟蹤,并在出現無條件分支指令時,存儲所跟蹤的第一地址,作為指令序列1的前導地址,并存儲指令序列的字節(jié)數,作為指令序列1的傳送字節(jié)數。主機還存儲指令序列2、3及其后指令序列的前導地址和傳送字節(jié)數。
主機將關于E-存儲器的寫入前導地址設置為初始值。主機通過發(fā)送/接收單元向寫入控制部分129h傳送指令序列1的指令、前導地址、傳送字節(jié)數和寫入前導地址。
寫入控制部分129h將指令序列1的寫入前導地址寫入第一寫入寄存器172中,將指令序列1的前導地址和傳送字節(jié)數寫入第一寄存器174中,并向地址選擇器161傳送指令序列1的指令。寫入地址轉換器168根據第一寫入寄存器172的傳送字節(jié)數,將第一寫入寄存器172的指令序列1的寫入前導地址轉換為用于對E-存儲器158進行寫入的地址。E-存儲器158輸入來自地址第一選擇器161的地址,從而將指令序列1的指令寫入其中。按照相同的方式,將指令序列2及其后指令序列的指令寫入E-存儲器158中。
當完成寫入時,主機通過發(fā)送/接收單元向寫入控制部分129h傳送指令序列1的寫入前導地址、前導地址和傳送字節(jié)數。寫入控制部分129h將指令序列1的寫入前導地址寫入第一寫入寄存器172中,并將指令序列1的寫入前導地址寫入第二寫入寄存器173中。
2.在通過無條件分支指令1進行分支時的操作CPU輸出指令序列1的指令地址。在無條件分支指令1到達時,比較裝置163輸出CPU的指令地址并未落入從第一寄存器174的前導地址起的傳送字節(jié)數的范圍內的判斷結果。因為比較裝置163的判斷結果為否定,第一寄存器174將其內容更新為第二寄存器175的數值,以及第一寫入寄存器172將器內容更新為第二寫入寄存器173的前導地址和字節(jié)數。同時,因為比較裝置163的判斷結果為否定的,改變檢測部分130h通過發(fā)送/接收單元向主機輸出地址重寫命令Sd。
作為更新的結果,比較裝置163輸出CPU的指令地址落入從第一寄存器174的前導地址起的傳送字節(jié)數的范圍內的判斷結果。由于比較裝置163的判斷結果表示肯定,地址轉換器162根據第一寫入寄存器172的寫入前導地址以及第一寄存器174的前導地址和傳送字節(jié)數,將CPU的指令地址轉換為用于存取E-存儲器158的地址。此后,CPU按照相同的方式,輸入從E-存儲器158讀出的指令,并執(zhí)行這些指令。
同時,在接收到地址更新命令Sd之后,主機通過發(fā)送/接收單元向寫入控制部分129h傳送指令序列3的指令、寫入前導地址、前導地址和傳送字節(jié)數。寫入控制部分129h將指令序列3的寫入前導地址寫入第二寫入寄存器173,并將其前導地址和傳送字節(jié)數寫入第二寄存器175。
如上所述,根據本實施例,可以分別設置一對地址/字節(jié)數寄存器和一對寫入地址/字節(jié)數寄存器。在這種結構中,在分支時,各個寄存器將其內容更新為另一寄存器的數值,從而控制了由于對分支中所產生的地址和傳送字節(jié)數的串行傳送而導致的額外開銷。
通過以上的描述,本發(fā)明提供的內容將是顯而易見的。
權利要求
1.一種調試器裝置,包括多個仿真存儲器單元(E-存儲器單元),所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,所述執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入多個E-存儲器單元中,并按照CPU的指令地址,從多個E-存儲器單元之一中讀取指令序列,并傳送給CPU,以及當CPU的指令地址不相關時,向主機輸出指令重寫命令。
2.一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤要被存儲在該多個E-存儲器單元中的指令,并以指令序列的形式傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,所述執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入E-存儲器單元中,并按照CPU的指令地址,從多個E-存儲器單元之一中讀取指令序列,并將指令序列傳送給CPU,以及當CPU的指令地址不相關時,向主機輸出指令重寫命令。
3.根據權利要求2所述的調試器裝置,其中主機根據執(zhí)行序列,根據由CPU執(zhí)行的指令,并向執(zhí)行監(jiān)督單元傳送與各個E-存儲器單元的存儲器容量相等的指令序列,執(zhí)行監(jiān)督單元將從主機傳送過來的、與存儲器容量相等的指令序列順序地寫入多個E-存儲器單元中,CPU向執(zhí)行監(jiān)督單元輸出指令地址,執(zhí)行監(jiān)督單元根據CPU的指令地址,判斷當前讀取的E-存儲器單元是否不同于先前讀取的E-存儲器單元,在E-存儲器單元彼此不同時,執(zhí)行監(jiān)督單元還向主機輸出指令重寫命令,并讀取來自當前讀取的E-存儲器單元的指令序列,從而向CPU傳送指令序列,CPU執(zhí)行從指令監(jiān)督單元傳送過來的指令序列,主機響應指令重寫命令,跟蹤指令,從而向執(zhí)行監(jiān)督單元傳送下一個指令序列,以及執(zhí)行監(jiān)督單元按照等于其存儲器容量的方式,將從主機傳送過來的指令序列寫入先前讀取的E-存儲器單元中。
4.一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤要被存儲在E-存儲器單元中的指令,并以指令序列的形式傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,所述執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入多個E-存儲器單元中,并依照CPU的指令地址,從多個E-存儲器單元之一中讀取指令序列,并傳將指令序列送給CPU,以及當與CPU的指令地址相一致的指令表示無條件分支指令的執(zhí)行時,向主機輸出指令重寫命令。
5.根據權利要求4所述的調試器裝置,其中主機根據執(zhí)行序列,跟蹤由CPU執(zhí)行的指令,并在出現無條件分支指令時,區(qū)分其分支目的地和分支起點的指令序列,并向執(zhí)行監(jiān)督單元傳送每個指令序列的指令,執(zhí)行監(jiān)督單元按照指令序列,將從主機傳送過來的指令順序地寫入多個E-存儲器單元,CPU向執(zhí)行監(jiān)督單元輸出無條件分支指令的地址,執(zhí)行監(jiān)督單元根據CPU的指令地址,判斷無條件分支指令的當前讀取的E-存儲器單元是否不同于先前讀取的E-存儲器單元,在E-存儲器單元彼此不同時,執(zhí)行監(jiān)督單元還向主機輸出指令重寫命令,并讀取來自當前讀取的E-存儲器單元的無條件分支指令,從而向CPU傳送無條件分支指令,CPU執(zhí)行從指令監(jiān)督單元傳送過來的無條件分支指令,主機響應指令重寫命令,跟蹤指令,從而向執(zhí)行監(jiān)督單元傳送要執(zhí)行的下一指令序列,以及執(zhí)行監(jiān)督單元按照等于其存儲器容量的方式,將從主機傳送過來的指令序列寫入先前讀取的E-存儲器單元中。
6.根據權利要求5所述的調試器裝置,其中主機根據執(zhí)行序列,跟蹤由CPU執(zhí)行的指令,在無條件分支指令的分支目的地對應于相同E-存儲器的存儲器區(qū)域時,執(zhí)行監(jiān)督單元將適合于相同E-存儲器單元的多個指令序列寫入相同的E-存儲器單元中,CPU向執(zhí)行監(jiān)督單元輸出無條件分支指令的地址,執(zhí)行監(jiān)督單元按照CPU的指令地址,判斷無條件分支指令的當前讀取的E-存儲器單元是否與先前讀取的E-存儲器單元相同,并在E-存儲器相同時,終止指令重寫命令的輸出。
7.一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤存儲在E-存儲器單元中的指令,并以指令序列的形式傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,所述執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入多個E-存儲器單元中,并按照CPU的指令地址,從多個E-存儲器單元之一中讀取指令序列,并該指令序列傳送給CPU,以及當與CPU的指令地址相一致的指令表示無條件分支指令的執(zhí)行時,向主機輸出指令重寫命令,以及當與CPU的指令地址相一致的指令表示子程序調用指令時,終止指令重寫命令的輸出。
8.根據權利要求7所述的調試器裝置,其中主機根據執(zhí)行序列,跟蹤由CPU執(zhí)行的指令,并在出現子程序調用指令時,區(qū)分包括其分支目的地和分支起點的指令序列,并按照指令序列向執(zhí)行監(jiān)督單元傳送指令,執(zhí)行監(jiān)督單元按照指令序列,將從主機傳送過來的指令順序地寫入多個E-存儲器單元,CPU向執(zhí)行監(jiān)督單元輸出子程序調用指令的地址,執(zhí)行監(jiān)督單元根據CPU的指令地址,判斷當前讀取的E-存儲器單元是否不同于先前讀取的E-存儲器單元,在E-存儲器單元原則上彼此不同時,執(zhí)行監(jiān)督單元還向主機輸出指令重寫命令,而在子程序調用指令的情況下,終止指令重寫命令的輸出,并讀取來自當前讀取的E-存儲器單元的子程序指令序列,從而向CPU傳送子程序指令序列,以及CPU執(zhí)行從指令監(jiān)督單元傳送過來的子程序指令序列。
9.一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤存儲在E-存儲器單元中的指令,并以指令序列的形式傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,所述執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入多個E-存儲器單元中,并按照CPU的指令地址,從多個E-存儲器單元之一中讀取指令序列,并將指令序列傳送給CPU,以及當與CPU的指令地址相一致的指令表示無條件分支指令的執(zhí)行時,向主機輸出指令重寫命令,以及當與指令地址相一致的指令表示例外處理的執(zhí)行時,終止指令重寫命令的輸出。
10.根據權利要求9所述的調試器裝置,其中主機根據執(zhí)行序列,跟蹤由CPU執(zhí)行的指令,并在出現例外處理時,區(qū)分包括其分支目的地和分支起點的指令序列,并向執(zhí)行監(jiān)督單元傳送每個指令序列的指令,執(zhí)行監(jiān)督單元按照指令序列,將從主機傳送過來的指令順序地寫入多個E-存儲器單元,CPU向執(zhí)行監(jiān)督單元輸出例外處理的地址,執(zhí)行監(jiān)督單元根據CPU的指令地址,判斷當前讀取的E-存儲器單元是否不同于先前讀取的E-存儲器單元,在E-存儲器單元原則上彼此不同時,執(zhí)行監(jiān)督單元還向主機輸出指令重寫命令,而在例外處理的情況下,終止指令重寫命令的輸出,并讀取來自當前讀取的E-存儲器單元的例外處理,從而向CPU傳送例外處理,以及CPU執(zhí)行從指令監(jiān)督單元傳送過來的例外處理。
11.一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤存儲在E-存儲器單元中的指令,并以指令序列的形式傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,所述執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入多個E-存儲器單元中,并按照CPU的指令地址,從多個E-存儲器單元之一中讀取指令序列,從而傳送給CPU,當與CPU的指令地址相一致的指令表示條件分支指令的執(zhí)行時,判斷該分支是否被建立,并當所述分支被建立時,向主機輸出指令重寫命令。
12.根據權利要求11所述的調試器裝置,其中主機根據執(zhí)行序列,跟蹤由CPU執(zhí)行的指令,并在出現條件分支指令時,區(qū)分包括其分支目的地和分支起點的指令序列,并向執(zhí)行監(jiān)督單元傳送每個指令序列的指令,執(zhí)行監(jiān)督單元按照指令序列,將從主機傳送過來的指令順序地寫入多個E-存儲器單元,CPU向執(zhí)行監(jiān)督單元輸出條件分支指令的地址,執(zhí)行監(jiān)督單元判斷條件分支指令的分支是否被建立,并根據CPU的指令地址,判斷條件分支指令的當前讀取的E-存儲器單元是否不同于先前讀取的E-存儲器單元,在E-存儲器單元彼此不同時,執(zhí)行監(jiān)督單元還向主機輸出指令重寫命令,并讀取來自當前讀取的E-存儲器單元的條件分支指令,從而向CPU傳送條件分支指令,而在條件分支指令失敗時,向主機輸出對條件分支指令的下一個指令重寫命令,CPU執(zhí)行從指令監(jiān)督單元傳送過來的條件分支指令,主機響應指令重寫命令,跟蹤指令,并且還響應下一個指令重寫命令,跟蹤該指令,從而向執(zhí)行監(jiān)督單元分別傳送要執(zhí)行的下一個指令序列,以及執(zhí)行監(jiān)督單元按照等于其存儲器容量的方式,將從主機傳送過來的指令序列寫入先前讀取的E-存儲器單元中。
13.根據權利要求11或12所述的調試器裝置,其中主機根據執(zhí)行次序跟蹤由CPU執(zhí)行的指令,并對所跟蹤的指令進行仿真,當仿真結果表示條件分支指令的出現時,預測該分支是否被建立或失敗,當預測該分支失敗時,終止針對執(zhí)行監(jiān)督單元的分支目的地的指令序列傳送。
14.一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤存儲在E-存儲器單元中的指令,并以指令序列的形式傳送跟蹤結果,并可能傳送包括多條條件分支指令的指令序列;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,所述執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入多個E-存儲器單元中,并依照CPU的指令地址,從多個E-存儲器單元之一中讀取指令序列,從而將指令序列傳送給CPU,當與CPU的指令地址相一致的指令表示多條條件分支指令中的第一條件分支指令的執(zhí)行時,執(zhí)行監(jiān)督單元判斷分支是否被建立,當判斷分支被建立時,向主機輸出指令重寫命令,以及當判斷分支失敗時,終止指令重寫命令的輸出。
15.根據權利要求14所述的調試器裝置,其中主機根據執(zhí)行序列,跟蹤由CPU執(zhí)行的指令,并在出現多條條件分支指令時,區(qū)分包括多個分支目的地和分支起點的指令序列,并向執(zhí)行監(jiān)督單元傳送每個指令序列的指令,執(zhí)行監(jiān)督單元按照指令序列,將從主機傳送過來的指令順序地寫入多個E-存儲器單元,CPU向執(zhí)行監(jiān)督單元輸出第一條件分支指令的地址,執(zhí)行監(jiān)督單元判斷第一條件分支指令的分支是否被建立,并根據CPU的指令地址,判斷當前讀取的E-存儲器單元是否不同于先前讀取的E-存儲器單元,在E-存儲器單元彼此不同時,執(zhí)行監(jiān)督單元還向主機輸出指令重寫命令,并讀取來自當前讀取的E-存儲器單元的第一條件分支指令,從而向CPU傳送第一條件分支指令,而在第一條件分支指令失敗時,輸出對第一條件分支指令的下一個指令重寫命令,CPU執(zhí)行從執(zhí)行監(jiān)督單元傳送過來的第一條件分支指令,主機響應指令重寫命令,跟蹤指令,并響應下一個指令重寫命令,跟蹤指令,從而向執(zhí)行監(jiān)督單元分別傳送要執(zhí)行的下一個指令序列,執(zhí)行監(jiān)督單元按照等于其存儲器容量的方式,將從主機傳送過來的指令序列寫入先前讀取的E-存儲器單元中,CPU向執(zhí)行監(jiān)督單元輸出第二條件分支指令的地址,以及執(zhí)行監(jiān)督單元根據第二條件分支指令的分支的建立或失敗,執(zhí)行前述處理。
16.一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;多個E-存儲器單元,所述多個E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤存儲在E-存儲器單元中的指令,并以指令序列的形式傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,所述執(zhí)行監(jiān)督單元將從主機傳送過來的任務的指令序列單獨寫入多個E-存儲器單元中,并按照CPU的指令地址,從多個E-存儲器單元之一中讀取任務的指令序列,從而向CPU傳送任務的指令序列,以及當與CPU的指令地址相一致的指令表示任務切換的執(zhí)行時,向主機輸出指令重寫命令。
17.根據權利要求16所述的調試器裝置,其中主機根據執(zhí)行序列,跟蹤由CPU執(zhí)行的指令,并在出現任務切換時,區(qū)分分支目的地和分支起點的指令序列,并向執(zhí)行監(jiān)督單元傳送每個任務的指令,執(zhí)行監(jiān)督單元按照任務,將從主機傳送過來的指令順序地寫入多個E-存儲器單元,CPU向執(zhí)行監(jiān)督單元輸出任務切換的地址,執(zhí)行監(jiān)督單元根據CPU的指令地址,判斷任務切換的分支目的地的E-存儲器單元是否與先前讀取的E-存儲器單元相同,并在E-存儲器單元彼此不同時,向主機輸出指令重寫命令,并讀取來自當前讀取的E-存儲器單元的任務的指令序列,從而向CPU傳送該任務的指令序列,CPU執(zhí)行從指令監(jiān)督單元傳送過來的任務的指令序列,主機響應指令重寫命令,跟蹤指令,從而向執(zhí)行監(jiān)督單元傳送要執(zhí)行的任務的下一個指令序列,執(zhí)行監(jiān)督單元按照等于其存儲器容量的方式,將從主機傳送過來的任務的指令序列寫入先前讀取的E-存儲器單元中。
18.根據權利要求13所述的調試器裝置,其中主機根據執(zhí)行次序跟蹤由CPU執(zhí)行的指令,從而產生執(zhí)行樹結構,主機根據樹結構,區(qū)分分支指令的分支目的地和分支起點的指令序列,并向執(zhí)行監(jiān)督單元傳送每個指令序列的指令,以及執(zhí)行監(jiān)督單元按照指令序列,將從主機傳送過來的指令順序地寫入多個E-存儲器單元中。
19.一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;單一的E-存儲器單元,所述單一的E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤存儲在E-存儲器單元中的指令,并以指令序列的形式與寫入前導地址一起傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,所述執(zhí)行監(jiān)督單元保持從主機傳送過來的寫入前導地址,并按照寫入前導地址,將從主機傳送過來的指令序列寫入E-存儲器單元中。保持從主機傳送過來的寫入前導地址和前導指令地址,并根據寫入前導地址和前導指令地址,將CPU的指令地址轉換為存取E-存儲器單元的地址,并根據轉換的地址讀取來自E-存儲器的指令,從而將指令傳送到CPU,當與CPU的指令地址相一致的指令表示分支指令的執(zhí)行時,執(zhí)行監(jiān)督單元向主機輸出指令重寫命令,并保持從主機響應地址重寫命令而傳送過來的、要執(zhí)行的下一個指令序列的寫入前導地址和前導指令地址。
20.根據權利要求19所述的調試器裝置,其中主機根據執(zhí)行序列,跟蹤由CPU執(zhí)行的指令,并在出現分支指令時,區(qū)分其分支目的地和分支起點的指令序列,并向執(zhí)行監(jiān)督單元傳送每個指令序列的指令及其寫入前導地址,執(zhí)行監(jiān)督單元根據寫入前導地址,按照指令序列,將從主機傳送過來的指令寫入E-存儲器,并保持前導指令地址,CPU向執(zhí)行監(jiān)督單元輸出分支指令的地址,執(zhí)行監(jiān)督單元根據CPU的分支指令的地址,判斷分支指令的地址是否不同于當前前導指令地址,并在地址彼此不同時,向主機輸出地址重寫命令,主機響應地址重寫命令,跟蹤指令,并向執(zhí)行監(jiān)督單元傳送要執(zhí)行的下一個指令序列的寫入前導地址和前導指令地址,以及執(zhí)行監(jiān)督單元保持從主機傳送過來的寫入前導地址和前導指令地址。
21.一種調試器裝置,包括CPU,所述CPU執(zhí)行指令;單一的E-存儲器單元,所述單一的E-存儲器單元存儲由CPU執(zhí)行的指令;主機,所述主機跟蹤存儲在E-存儲器單元中的指令,并以指令序列的形式與寫入前導地址一起傳送跟蹤結果;以及執(zhí)行監(jiān)督單元,與CPU、E-存儲器單元和主機相連,所述執(zhí)行監(jiān)督單元保持從主機傳送過來的寫入前導地址,并依照寫入前導地址,將從主機傳送過來的指令序列寫入E-存儲器單元中,保持從主機傳送過來的寫入前導地址和前導指令地址,并保持下一指令的寫入前導地址和前導指令地址,執(zhí)行監(jiān)督單元根據寫入前導地址和前導指令地址,將CPU的指令地址轉換為用于存取E-存儲器的地址,根據轉換后的地址,從E-存儲器單元中讀取指令,從而將指令傳送給CPU,當與CPU的指令地址相一致的指令表示分支指令的執(zhí)行時,所述執(zhí)行監(jiān)督單元以下一個寫入前導地址代替當前的寫入前導地址,并以下一個指令序列的前導指令地址代替當前的前導指令地址,向主機輸出指令重寫命令,并響應地址重寫命令保持從主機傳送過來的、要執(zhí)行的下一個指令序列的寫入前導地址和前導指令地址,作為下一個處理的目標。
全文摘要
根據本實施例的一種調試器裝置,包括主機、CPU、用于存儲指令的多個E-存儲器單元(仿真存儲器單元)以及執(zhí)行監(jiān)督單元。主機跟蹤要被存儲在E-存儲器單元的指令,并以指令序列的形式傳送跟蹤結果。執(zhí)行監(jiān)督單元與CPU、E-存儲器單元和主機相連。執(zhí)行監(jiān)督單元將從主機傳送過來的指令序列單獨寫入多個E-存儲器單元中,按照CPU的指令地址,從多個E-存儲器單元之一讀取指令序列,從而向CPU傳送指令序列,并在CPU的指令地址不相關時,向主機輸出指令重寫命令。
文檔編號G06F13/00GK1581117SQ200410055910
公開日2005年2月16日 申請日期2004年8月3日 優(yōu)先權日2003年8月4日
發(fā)明者森河徹, 渡邊和嗣, 宮地信哉 申請人:松下電器產業(yè)株式會社