(57)【要約】      （修正有）【課題】リアルタイム・ステートマシンの性能向上のための技術を提供する。【解決手段】方法には、印刷デバイスのオブジェクトを処理するため、構成ステージおよびランタイムステージを含む２段階処理の利用が含まれる。構成ステージは、ランタイムステージより先に実行され、リアルタイムで動作する。構成ステージの間、システムはランタイムステージの間に利用される状態遷移リスト、監視される必要がある装置、制御される必要がある装置、および他の変数を予め決定する。一旦、構成ステージが完了すると、システムはリアルタイムでランタイムステージを実行し、印刷デバイスのオブジェクトの処理を完了させる。構成ステージの間に項目を事前に決定することにより、システムはリアルタイムでのランタイムステージの実行時間を減少させる。その結果、リアルタイムのマイクロコントローラの性能が向上する。【選択図】図４
2016189188.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング・デバイスであって、
１以上のプロセッサと、
実行可能な命令を格納するメモリであって、前記命令を実行する工程は、
前記１以上のプロセッサにより、２次元画像をレンダリングするための１以上のオブジェクトを含む順序に対するオブジェクトのデータを処理するための第１ステージを実行する工程であって、前記各オブジェクトは、前記２次元画像の画像データを含み、前記第１ステージは、
複数の中間変数を決定する工程と、
前記オブジェクトに対して、前記複数の中間変数に基づき状態遷移リストを生成する工程であって、前記状態遷移リストは、複数の所定の状態を含み、前記各所定の状態は、所定のアクションに関連付けられている工程と、
前記各所定の状態に対して、前記１以上のプロセッサに関連付けられている１以上の装置から装置状態を監視するための装置の第１サブセットを決定する工程と、
前記各所定の状態に対して、前記１以上のプロセッサに関連付けられている前記１以上の装置から制御するための装置の第２サブセットを決定する工程と、
を備える工程と、
前記１以上のプロセッサにより、前記オブジェクトのデータを処理するための第２ステージを実行する工程であって、前記第２ステージは、
前記状態遷移リストに基づき現在の所定の状態を決定する工程と、
前記現在の所定の状態に対する前記装置の第１サブセットの前記装置状態を決定する工程と、
前記現在の所定の状態に対する前記装置の第２サブセットに出力を送信する工程と、
前記状態遷移リストおよび前記現在の所定の状態に対する前記装置の第１サブセットの前記装置状態に基づき前記現在の所定の状態に対する前記所定のアクションを実行する工程と、
前記状態遷移リストに基づき次の所定の状態を決定する工程と、
前記現在の所定の状態の前記所定のアクションの実行完了後に前記次の所定の状態に進む工程と、
を備える工程と、
を備える方法を前記１以上のプロセッサに実行させるメモリと、
を備えるデバイス。
【請求項２】
請求項１に記載のコンピューティング・デバイスであって、さらに、
前記第１ステージに対し、
前記各所定の状態に対する前記装置の第１サブセットの状態マスクを生成する工程と、
前記第２ステージに対し、
さらに、前記現在の所定の状態に対する前記状態マスクに基づき前記現在の所定の状態に対する前記装置の第１サブセットの前記装置状態を決定する工程と、
を備えるデバイス。
【請求項３】
請求項２に記載のコンピューティング・デバイスであって、さらに、
前記第１ステージに対し、
前記１以上のプロセッサにより、前記各所定の状態に対する前記装置の第１サブセットの極性を受信する工程と、
前記第２ステージに対し、
さらに、前記状態マスクおよび前記現在の所定の状態に対する前記受信された極性に基づき前記現在の所定の状態に対する前記装置の第１サブセットの前記装置状態を決定する工程と、
を備えるデバイス。
【請求項４】
請求項２又は３に記載のコンピューティング・デバイスであって、さらに、
前記第１ステージに対し、
前記各所定の状態に対して前記装置の第２サブセットの制御マスクを生成する工程と、
前記第２ステージに対し、
前記現在の所定の状態に対する前記制御マスクに基づき前記現在の所定の状態に対する前記装置の第２サブセットに出力を送信する工程と、
を備えるデバイス。
【請求項５】
請求項１乃至４のいずれか１項に記載のコンピューティング・デバイスであって、さらに、
前記１以上のプロセッサにより、前記第２ステージを実行する工程であって、前記第２ステージは、さらに、
前記状態遷移リストに基づき最終的な所定の状態を決定する工程と、
少なくとも前記状態遷移リスト、前記最終的な所定の状態に対する前記状態マスク、および前記最終的な所定の状態に対する前記装置の第１サブセットの前記装置状態に基づき前記最終的な所定の状態の所定のアクションを実行する工程と、
を備える工程と、
前記順序に対する前記オブジェクトのデータを処理するための前記第１ステージおよび前記第２ステージの実行完了後に、
前記１以上のプロセッサにより、前記順序に対する第２オブジェクトのデータを処理するための前記第１ステージを実行する工程と、
前記１以上のプロセッサにより、前記順序に対する前記第２オブジェクトのデータを処理するための前記第２ステージを実行する工程と、
により、前記順序の前記第２オブジェクトを処理する工程と、
を備えるデバイス。
【請求項６】
請求項５に記載のデバイスであって、
前記順序は、前記１以上のオブジェクトの各々が処理されるとすぐに処理されるデバイス。
【請求項７】
請求項１乃至６のいずれか１項に記載のデバイスであって、
前記各オブジェクトは、複数のラインを含み、前記現在の所定の状態の前記所定のアクションは、少なくとも前記複数のラインの１つのラインに対するデバイス。
【請求項８】
請求項１乃至７のいずれか１項に記載のデバイスであって、
前記オブジェクトは台形であるデバイス。
【請求項９】
方法であって、
マイクロコントローラにより、２次元画像をレンダリングするための１以上のオブジェクトを含む順序に対するオブジェクトのデータを処理するための第１ステージを実行する工程であって、前記各オブジェクトは、２次元画像の画像データを含み、前記第１ステージは、
複数の中間変数を決定する工程と、
前記オブジェクトに対し、前記複数の中間変数に基づき状態遷移リストを生成する工程であって、前記状態遷移リストは、複数の所定の状態を含み、前記各所定の状態は、所定のアクションに関連付けられている工程と、
前記各所定の状態に対し、前記マイクロコントローラに関連付けられている１以上の装置から、装置状態を監視するための装置の第１サブセットを決定する工程と、
前記各所定の状態に対し、前記マイクロコントローラに関連付けられている前記１以上の装置から、制御するための装置の第２サブセットを決定する工程と、
を備える工程と、
前記マイクロコントローラにより、前記オブジェクトのデータを処理するための第２ステージを実行する工程であって、前記第２ステージは、
前記状態遷移リストに基づき現在の所定の状態を決定する工程と、
前記現在の所定の状態に対する前記装置の第１サブセットの前記装置状態を決定する工程と、
前記現在の所定の状態に対する前記装置の第２サブセットに出力を送信する工程と、
前記状態遷移リストおよび前記現在の所定の状態に対する前記装置の第１サブセットの前記装置状態に基づき前記現在の所定の状態の前記所定のアクションを実行する工程と、
前記状態遷移リストに基づき次の所定の状態を決定する工程と、
前記現在の所定の状態の前記所定のアクションの実行完了後、前記次の所定の状態に進む工程と、
を備える工程と、
を備える方法。
【請求項１０】
コンピュータプログラムであって、
マイクロコントローラの１以上のプロセッサにより、２次元画像をレンダリングするための１以上のオブジェクトを含む順序に対するオブジェクトのデータを処理するための第１ステージを実行する工程であって、前記各オブジェクトは、前記２次元画像の画像データを含み、前記第１ステージは、
複数の中間変数を決定する工程と、
前記オブジェクトに対し、前記複数の中間変数に基づき状態遷移リストを生成する工程であって、前記状態遷移リストは、複数の所定の状態を含み、前記各所定の状態は、所定のアクションに関連付けられている工程と、
前記各所定の状態に対し、前記１以上のプロセッサに関連付けられている１以上の装置から装置状態を監視するための装置の第１のサブセットを決定する工程と、
前記各所定の状態に対し、前記１以上のプロセッサに関連付けられている前記１以上の装置から制御するための装置の第２サブセットを決定する工程と、
を備える工程と、
前記１以上のプロセッサにより、前記オブジェクトのデータを処理するための第２ステージを実行する工程であって、前記第２ステージは、
前記状態遷移リストに基づき現在の所定の状態を決定する工程と、
前記現在の所定の状態に対する前記装置の第１サブセットの前記装置状態を決定する工程と、
前記現在の所定の状態に対する前記装置の第２サブセットに出力を送信する工程と、
前記状態遷移リストおよび前記現在の所定の状態に対する前記装置の第１サブセットの前記装置状態に基づき前記現在の所定の状態に対する前記所定のアクションを実行する工程と、
前記状態遷移リストに基づき次の所定の状態を決定する工程と、
前記現在の所定の状態の前記所定のアクションの実行完了後に、前記次の所定の状態に進む工程と、
を備える工程と、
を備える方法を前記マイクロコントローラの前記１以上のプロセッサに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リアルタイム・ステートマシンの性能向上のための技術に関する。
【背景技術】
【０００２】
近年、コンピュータ、デスクトップ、ラップトップ、サーバ、プリンタ、スキャナ、コピー機、ファクス、多機能印刷デバイス、および／または他のコンピューティング・デバイスを含む、様々なコンピューティング・デバイスへの需要が高まっている。これらの様々なコンピューティング・デバイスに対し、多様なハードウェアが、コンピューティング・デバイスにより利用され、タスクを実行できる。コンピューティング・デバイス・ハードウェアの１つのタイプがマイクロコントローラである。マイクロコントローラには、コンピューティング・デバイスに対するタスクを実行するため、プロセッサ、メモリ、および入出力部を含めてもよい。アプリケーションによっては、マイクロコントローラは、コンピューティング・デバイスでタスクを実行するための、低コストで、柔軟性があり、高性能なオプションであってよい。
【発明の概要】
【０００３】
第１の態様における、方法であって、マイクロコントローラにより、２次元画像をレンダリングするための１以上のオブジェクトを含む順序に対するオブジェクトのデータを処理するための第１ステージを実行する工程であって、前記各オブジェクトは、２次元画像の画像データを含み、前記第１ステージは、複数の中間変数を決定する工程と、前記オブジェクトに対し、前記複数の中間変数に基づき状態遷移リストを生成する工程であって、前記状態遷移リストは、複数の所定の状態を含み、前記各所定の状態は、所定のアクションに関連付けられている工程と、前記各所定の状態に対し、前記マイクロコントローラに関連付けられている１以上の装置から、装置状態を監視するための装置の第１サブセットを決定する工程と、前記各所定の状態に対し、前記マイクロコントローラに関連付けられている前記１以上の装置から、制御するための装置の第２サブセットを決定する工程と、を備える工程と、前記マイクロコントローラにより、前記オブジェクトのデータを処理するための第２ステージを実行する工程であって、前記第２ステージは、前記状態遷移リストに基づき現在の所定の状態を決定する工程と、前記現在の所定の状態に対する前記装置の第１サブセットの前記装置状態を決定する工程と、前記現在の所定の状態に対する前記装置の第２サブセットに出力を送信する工程と、前記状態遷移リストおよび前記現在の所定の状態に対する前記装置の第１サブセットの前記装置状態に基づき前記現在の所定の状態の前記所定のアクションを実行する工程と、前記状態遷移リストに基づき次の所定の状態を決定する工程と、前記現在の所定の状態の前記所定のアクションの実行完了後、前記次の所定の状態に進む工程と、を備える工程と、を備える方法。
【０００４】
第２の態様における、コンピュータプログラムであって、マイクロコントローラの１以上のプロセッサにより、２次元画像をレンダリングするための１以上のオブジェクトを含む順序に対するオブジェクトのデータを処理するための第１ステージを実行する工程であって、前記各オブジェクトは、前記２次元画像の画像データを含み、前記第１ステージは、複数の中間変数を決定する工程と、前記オブジェクトに対し、前記複数の中間変数に基づき状態遷移リストを生成する工程であって、前記状態遷移リストは、複数の所定の状態を含み、前記各所定の状態は、所定のアクションに関連付けられている工程と、前記各所定の状態に対し、前記１以上のプロセッサに関連付けられている１以上の装置から装置状態を監視するための装置の第１のサブセットを決定する工程と、前記各所定の状態に対し、前記１以上のプロセッサに関連付けられている前記１以上の装置から制御するための装置の第２サブセットを決定する工程と、を備える工程と、前記１以上のプロセッサにより、前記オブジェクトのデータを処理するための第２ステージを実行する工程であって、前記第２ステージは、前記状態遷移リストに基づき現在の所定の状態を決定する工程と、前記現在の所定の状態に対する前記装置の第１サブセットの前記装置状態を決定する工程と、前記現在の所定の状態に対する前記装置の第２サブセットに出力を送信する工程と、前記状態遷移リストおよび前記現在の所定の状態に対する前記装置の第１サブセットの前記装置状態に基づき前記現在の所定の状態に対する前記所定のアクションを実行する工程と、前記状態遷移リストに基づき次の所定の状態を決定する工程と、前記現在の所定の状態の前記所定のアクションの実行完了後に、前記次の所定の状態に進む工程と、を備える工程と、を備える方法を前記マイクロコントローラの前記１以上のプロセッサに実行させるプログラム。
【０００５】
第３の態様における、コンピューティング・デバイスであって、１以上のプロセッサと、実行可能な命令を格納するメモリであって、前記命令を実行する工程は、前記１以上のプロセッサにより、２次元画像をレンダリングするための１以上のオブジェクトを含む順序に対するオブジェクトのデータを処理するために第１ステージを実行する工程であって、前記各オブジェクトは、前記２次元画像の画像データを含み、前記第１ステージは、複数の中間変数を決定する工程と、前記オブジェクトに対して、前記複数の中間変数に基づき状態遷移リストを生成する工程であって、前記状態遷移リストは、複数の所定の状態を含み、前記各所定の状態は、所定のアクションに関連付けられている工程と、前記各所定の状態に対して、前記１以上のプロセッサに関連付けられている１以上の装置から装置状態を監視するための装置の第１サブセットを決定する工程と、前記各所定の状態に対して、前記１以上のプロセッサに関連付けられている前記１以上の装置から制御するための装置の第２サブセットを決定する工程と、を備える工程と、前記１以上のプロセッサにより、前記オブジェクトのデータを処理するための第２ステージを実行する工程であって、前記第２ステージは、前記状態遷移リストに基づき現在の所定の状態を決定する工程と、前記現在の所定の状態に対する前記装置の第１サブセットの前記装置状態を決定する工程と、前記現在の所定の状態に対する前記装置の第２サブセットに出力を送信する工程と、前記状態遷移リストおよび前記現在の所定の状態に対する前記装置の第１サブセットの前記装置状態に基づき前記現在の所定の状態に対する前記所定のアクションを実行する工程と、前記状態遷移リストに基づき次の所定の状態を決定する工程と、前記現在の所定の状態の前記所定のアクションの実行完了後に前記次の所定の状態に進む工程と、を備える工程と、を備える方法を前記１以上のプロセッサに実行させるメモリと、を備えるデバイス。
【０００６】
これらは、他の態様、代替、および利点と同様に、添付図面を適宜参照しながら以下の詳細な説明を読むことにより当業者にとって明らかとなるであろう。
【図面の簡単な説明】
【０００７】
【図１Ａ】例示の状態遷移図を示す。
【図１Ｂ】状態アクション判定の一例をフローチャートにて示す。
【図１Ｃ】例示の状態遷移図を示す。
【図２】コンピューティング・デバイスの一例をブロック図にて示す。
【図３】例示のステートマシン実行の一例をフローチャートにて示す。
【図４】例示のステートマシン実行の一例をブロック図にて示す。
【図５】装置状態出力ベクトルの決定の一例をブロック図にて示す。
【図６Ａ】例示のステートマシンを実行するステップをフローチャートにて示す。
【図６Ｂ】例示のステートマシンを実行するステップをフローチャートにて示す。
【図６Ｃ】例示のステートマシンを実行するステップをフローチャートにて示す。
【発明を実施するための形態】
【０００８】
以下、本明細書の一部を構成する添付図面を参照して、詳細な説明を行う。しかしながら、本明細書中に記載されている配置は、例としてのみ記載されていることは理解されるべきである。このように、当業者であれば、他の配置および構成要素（例えば、機械、インターフェース、機能、機能の順序、など）が代わりにまたは加えて利用可能なことは、十分理解するだろう。さらに、本明細書中に記載されている構成要素の多くは、個別または分散された構成要素として、または他の構成要素と一緒に、および任意の適切な組み合わせおよび位置で実行されてもよい機能エンティティである。１以上のエンティティにより実行されるような本明細書中に記載されている様々な機能は、ハードウェア、ファームウェア、またはソフトウェア論理により実行されてもよい。例えば、本明細書中に記載されている様々な機能は、任意の適切なプログラミング言語で記述されてメモリに格納された命令を実行するプロセッサにより実行されてもよい。
【０００９】
本記述において、少なくとも２つの言葉が記述されたリストで接続詞「または」を使用するのは、リスト化された言葉の何れかまたはリスト化された言葉の任意の組み合わせを示すためである。「第１」、「第２」、「第３」などの序数の使用は、これらの構成要素の特定の順序を示すというよりは、それぞれの構成要素を区別するためである。
［１．概要］
【００１０】
印刷デバイスは、様々なタイプのハードウェアに依存し、文書を印刷する処理に関連しているタスクを実行する。ハードウェアの１つタイプには、特定用途向け集積回路（ＡＳＩＣ）が含まれる。ＡＳＩＣは特定のタスクを実行するように構成できる。ＡＳＩＣの１つのメリットは、ＡＳＩＣが多数のタスクを並行に実行できることである。例えば、ＡＳＩＣは、数千の静的変数を並行して評価することができる。その結果、ＡＳＩＣの計算能力により、印刷デバイスおよび他の関連装置は、優れた性能を発揮することができる。
【００１１】
しかしながら、ＡＳＩＣの欠点は、柔軟性に欠けることである。特に、ＡＳＩＣの機能性は、一旦構成されると、修正ができない。その結果、様々なタスクを実行するためにＡＳＩＣの構成を修正する必要がある場合、ＡＳＩＣを置き換える必要があるかもしれない。ＡＳＩＣの置き換えは、高価な、および／または時間のかかる可能性がある。ＡＳＩＣを再構成する必要がある理由には、プロトコル変更、機能性の向上、欠陥の補正、設計の修正、または他の理由が含まれる。
【００１２】
印刷する文書処理タスクを実行するために印刷デバイスが利用可能な代替タイプのハードウェアは、マイクロコントローラである。マイクロコントローラは、タスクを実行するように構成可能な低コストのハードウェア装置である。マイクロコントローラには、プロセッサ、メモリ、および入出力装置を含めてもよい。マイクロコントローラは、メモリに格納されたソフトウェア命令を実行するためにプロセッサを使用することにより構成された特定のタスクを完了させる。
【００１３】
マイクロコントローラの１つのメリットは、柔軟性である。特に、マイクロコントローラが様々なタスクを実行するためにマイクロコントローラの構成を修正する必要がある場合、構成は、マイクロコントローラに格納されたソフトウェアを修正することにより変更できる。例えば、マイクロコントローラをプロトコル変更、ソフトウェアのバグ補正、機能性の向上、設計の修正、またはある他の理由のために再構成する必要がある場合、マイクロコントローラを再構成可能な１つの方法は、マイクロコントローラにアップデートされたソフトウェアをダウンロードおよび／または格納することである。ハードウェアは、置き換える必要がないかもしれない。結果として、マイクロコントローラの構成変更は、安価になるかもしれない。このように、マイクロコントローラは、印刷デバイスにとって柔軟なハードウェア実装である。
【００１４】
マイクロコントローラの１つの欠点は、性能である。特に、マイクロコントローラによるタスクの実行は、本来順次的である。一方、ＡＳＩＣは、多数のタスクを並行して実行できる。その結果、リアルタイムで実行予定の多数のタスクを要求する操作にとって、ＡＳＩＣは、マイクロコントローラより著しく速くタスクを実行するかもしれない。それは、ＡＳＩＣがタスクを並行に実行できるのに対して、マイクロコントローラはタスクを直列に実行するためである。
【００１５】
本開示のシステムおよび方法は、マイクロコントローラによるタスクのリアルタイム性能を向上させる。具体的には、マイクロコントローラは、タスクをリアルタイムで実行するために２段階ソリューションを実行する。厳密に言えば、マイクロコントローラは、構成ステージを実行後、リアルタイムでランタイムステージを実行する。構成ステージはアプリケーションのリアルタイム実行より先に完了するため（例えば、ランタイムステージ）、マイクロコントローラのリアルタイム性能は、ランタイムステージに基づき測定できる。
【００１６】
構成ステージの間、マイクロコントローラは、静止状態、分岐、およびアクションを評価し、状態遷移リスト、事前評価された状態マスク、および事前評価された制御マスクを生成する。マイクロコントローラは、また、構成ステージの間に静的オブジェクトおよび／または変数を評価してもよい。ランタイムステージの間、マイクロコントローラは、生成された状態遷移リスト、状態マスク、および制御マスクに基づき所定のアクションを実行する。マイクロコントローラは、また、ランタイムステージの間に動的オブジェクトおよび／または変数を評価してもよい。動的変数は、装置状態のような、ランタイム間に評価される変数でもよい。構成ステージはランタイムステージより先に実行されるため、マイクロコントローラのリアルタイム性能は向上する。
【００１７】
開示されているシステムおよび方法が様々なコンピューティング・デバイスに適用できるのに対し、図１Ａ乃至図６Ｃに示される実施形態において、システムおよび方法は、マイクロコントローラを使用した印刷デバイスに対して説明される。それと共に、図１Ａ乃至図６Ｃに示される実施形態に対して、説明されているシステムおよび方法は、印刷デバイスに対してアプリケーションをレンダリングする２次元画像に適用される。しかしながら、他の実施形態においては、開示されたシステムおよび方法は、アプリケーションに適用してもよい。また、開示されたシステムおよび方法は、異なるコンピューティング・デバイスにより実行されてもよい。さらに、システムおよび方法は、マイクロコントローラ以外のハードウェアにより実行されてもよい。
【００１８】
図１Ａは、ステートマシン１００の状態遷移図を示す。図１Ａのステートマシン１００は、２段階実行することなく、リアルタイムで実行されてもよい。図１Ａに示された実施形態において、ステートマシン１００は、２次元画像をレンダリングする順序の処理に対応する。順序には、画像データを含む１以上のオブジェクトが含まれる。しかしながら、他の実施形態においては、ステートマシン１００は、異なるオブジェクト、順序、および／またはアプリケーションに対するものである可能性がある。
【００１９】
ステートマシン１００には、状態１０１乃至１１０、１５１乃至１６０、および１７１乃至１９２が含まれる。各状態は、斜線を施した楕円形として表される。状態１０１乃至１１０は、リアルタイムで実行される状態に対応する。状態１５１乃至１６０および１７１乃至１９２は、ステートマシン１００のリアルタイム実行より先に事前評価できる状態に対応する。状態１５１乃至１６０は、状態１０３に続き得る状態で、図１Ｃにおいてさらに詳細に説明される。各状態に対して、ソフトウェア・コードの一部は、状態を実行するためのコンピューティング・デバイスのメモリに格納されてもよい。
【００２０】
図１Ａの２つの状態間の矢印は、１つの状態から他の状態への可能性のある遷移を表している。例えば、状態１７９は３つの矢印を含み、そのうち１つは状態１８０を指し、別の１つは状態１８４に指し、最後の１つは状態１８５を指す。このように、状態１７９の実行によって、直後の状態は、状態１８０、状態１８４、または状態１８５になり得る。場合によっては、状態は、その状態から次の可能性のある状態を指し示す１つの矢印を有するのみでもよい。例えば、状態１０１は、状態１０１から状態１０２を指し示す１つの矢印を有するのみである。この矢印は、状態１０２は状態１０１に続き得る唯一の状態でもよいことを示している。このように、状態１０１が完了すると、実行は状態１０２に進む。
【００２１】
代わりに、２つの状態間の遷移は、斜線を施した円の重複により示してもよい。例えば、状態１０２および１０３は、重複する楕円形を有している。かかる場合には、状態１０２がはじめに実行された後、状態１０３が続く。状態が重なっている場合、その状態を指し示す矢印を有する状態が、重複している状態のうち最初に実行されてもよい。その状態から離れて指し示す矢印を含む状態が、重複している状態のうち２番目に実行されてもよい。このように、状態１０２および１０３、１０４および１０５、並びに１０６および１０７の重複するペアに関して、状態１０３、１０５、および１０７は、それぞれ状態１０２、１０４、および１０６の実行に続いてもよい。
【００２２】
図１Ａは、ステートマシンのリアルタイム実行をＡＳＩＣからマイクロコントローラに変更する際の問題を説明するために利用できる。特に、ハードウェアの変更は、ステートマシン１００のリアルタイム実行性能を著しく減少させるかもしれない。前述のように、ＡＳＩＣは、数千の静的オブジェクト変数を並行に評価するように構成できる。その結果、多数の状態および遷移を含む、図１Ａにおけるステートマシンを、多数のタスクを並行に実行するＡＳＩＣは、リアルタイムで迅速に評価できる。具体的に言えば、評価する次の状態を決定するためにどの遷移を利用するかを決定するために、状態が評価されてもよい。例えば、状態１７９は、次の状態が状態１８０、状態１８４、または状態１８５かどうか決定するために評価されてもよい。ＡＳＩＣは、状態１７９、１８０、１８４、１８５、および／または他の状態を並行に評価できる。その結果、ステートマシン１００のリアルタイム性能は向上する。
【００２３】
マイクロコントローラは、しかしながら、タスクを直列に実行する。このように、マイクロコントローラは、状態１７９を実行してもよい。状態１７９を実行する一方、マイクロコントローラは、続いて状態１８０、状態１８４、または状態１８５が状態１７９に続くかどうか決定してもよい。状態１７９を実行後、マイクロコントローラは、続いて、状態１７９の実行結果によって、状態１８０、状態１８４、または状態１８５のうち１つを実行する。状態１８０、状態１８４、または状態１８５のうち１つを実行する一方、マイクロコントローラは、また、状態１８０、状態１８４、または状態１８５の実行に続く状態を決定してもよい。この状態の直列実行は、ステートマシン１００に表示される多数の、およびおそらく全ての状態および／または遷移に適用するだろう。その結果、マイクロコントローラによるステートマシン１００のリアルタイムでの実行は、ＡＳＩＣによるステートマシン１００のリアルタイム実行よりも極めて長くなるだろう。
【００２４】
図１Ｂは、状態１０３の状態アクション判定を表示する一例を示す。図１Ｂには、状態１０１、１０３、１０４、１０６、１０８、および１５１乃至１６０が含まれる。図１Ｂには、また、条件１２１乃至１３５およびタスク１４１乃至１４６が含まれる。実施形態によっては、図１Ｂには、図１Ｂに示されているよりも多い、少ない、および／または示されているものとは異なる状態、タスク、および／または条件が含まれてもよい。
【００２５】
図１Ｂに見られるように、現在の状態（例えば、状態１０３）に続くべき状態の決定には、多数の条件（例えば、条件１２１乃至１３５）の評価および１以上のタスク（例えば、タスク１４１乃至１４６）の実行が要求されてもよい。ＡＳＩＣに関しては、ＡＳＩＣは多数の条件およびタスクを並行に処理できるため、この評価は、リアルタイム性能を妨げないかもしれない。しかしながら、マイクロコントローラに関しては、マイクロコントローラはタスクおよび条件を直列に処理するため、次の状態を決定するための多数の条件およびタスクの処理により、リアルタイム性能が落ちるかもしれない。このように、マイクロコントローラによる個別の状態のリアルタイム実行は、ＡＳＩＣと比較すると性能が劣るかもしれない。
【００２６】
マイクロコントローラの低性能に対処する１つの方法は、リアルタイムでステートマシン１００を実行するための２段階法を実行することである。具体的に言うと、第１ステージは、ステートマシン１００の残りの状態および条件のリアルタイム実行より先に、様々な状態（例えば、状態１０１乃至１１０、１５１乃至１６０、および１７１乃至１９２）および条件（例えば、状態１０３に対する条件１２１乃至１３５）を事前評価するために利用できる。１以上の状態および条件を事前評価することにより、マイクロコントローラによるステートマシン１００のリアルタイム実行を向上させることができる。
【００２７】
図１Ｃは、実行された２段階実行によるステートマシン１００のリアルタイム実行を示し、これがステートマシン１５０となる。ステートマシン１５０には、ステートマシン１００の状態１０１乃至１１０が含まれる。ステートマシン１５０には、ステートマシン１００の状態１５１乃至１６０および状態１７１乃至１９２は含まれない。具体的に言うと、２段階実行を行う場合、リアルタイム実行に先立つ第１ステージの間に、状態１５１乃至１６０および状態１７１乃至１９２がステートマシン１５０のリアルタイム実行の間に実行されないことを決定してもよい。その結果、状態１０１乃至１１０のみがリアルタイムで実行される。このように、ステートマシン１５０には、状態１０１乃至１１０が含まれるのみである。実施形態によっては、１以上の状態１０１乃至１１０、１５１乃至１６０および状態１７１乃至１９２が、状態１０１乃至１１０のリアルタイム実行より先に部分的にまたは全て事前評価されてもよい。
【００２８】
２段階実行を行うことにより、マイクロコントローラのリアルタイム性能が向上する。具体的には、リアルタイムでステートマシン１００の状態および遷移を実行する代わりに、マイクロコントローラは、ステートマシン１５０に表示された状態および遷移を実行するのみである。例えば、ステートマシン１５０は、実行すべき１０の状態（状態１０１乃至１１０）を有するのみである一方、ステートマシン１００は、実行すべき４２の状態（状態１０１乃至１１０、１５１乃至１６０、および１７１乃至１９２）を潜在的に有する。このように、２段階実行を行うことは、リアルタイムで実行すべき状態および遷移の数が減少することにより、マイクロコントローラのリアルタイム性能を向上させることができる。
【００２９】
それと共に、２段階実行は、特定の状態に対するマイクロコントローラのリアルタイム性能を向上させることができる。図１Ｂを参照すると、１以上の条件１２１乃至１３５は、リアルタイム実行より先に事前評価されてもよい。それと共に、１以上のタスク１４１乃至１４６も、リアルタイム実行より先に完了してもよい。その結果、リアルタイムでの状態１０３の実行には、たとえあったとしても、条件１２１乃至１３５のうちより少ない条件の評価しか含まれないかもしれない。さらに、リアルタイムでの状態１０３の実行には、たとえあったとしても、タスク１４１乃至１４６のうちより少ないタスクの実行しか含まれないかもしれない。
【００３０】
図１Ｂを参照すると、一例において、第１ステージの間、条件１２１、１２３，１２４及び１２５は、「ｎｏ」という結果として評価される一方、条件１２２は、「ｙｅｓ」という結果として評価されたかもしれない。それと共に、条件１２８は、「ｙｅｓ」の結果で評価されたかもしれない。その結果として、次の状態に進む前にリアルタイムで実行される必要があるかもしれないタスクは、タスク１４２および１４４のみであり、これは状態１０４である。実施形態によっては、タスク１４２および／または１４４は、リアルタイムで実行されてもよい。他の実施形態においては、タスク１４２および／または１４４は、第２ステージのリアルタイム実行より先に、第１ステージの間に実行されてもよい。このように、２段階実行の実施は、リアルタイムで処理する状態および遷移の数を減少させ、特定の状態に対して処理する条件および／またはタスクの数を減少させることにより、マイクロコントローラのリアルタイム性能を向上させることができる。
【００３１】
図１Ａおよび図１Ｃは、ステートマシン１００および１５０の実施形態を示したが、他の実施形態においては、ステートマシンには、より多い、より少ない、および／または異なる状態および／または遷移を含めてもよい。ステートマシンの他の構成も可能である。
［２．印刷デバイスのコンピューティング・デバイス構成要素の例］
【００３２】
図２は、印刷デバイス２００の例示の実施形態をマイクロコントローラ２０１で示す。
【００３３】
マイクロコントローラ２０１には、プロセッサ２０２、メモリ２０４、および入出力部２０６を含めてもよく、これらの全ては、マイクロコントローラ・システムバス２０８または類似のメカニズムにより接続されてもよい。プロセッサ２０２は、１以上のプロセッサを表してもよい。
【００３４】
メモリ２０４は、次に、揮発性および／または非揮発性データ記憶部を備えてもよく、プロセッサ２０２に全体または一部統合させることができる。メモリ２０４は、プロセッサ２０２により実行可能なプログラム命令、およびその命令により操作されるデータを格納して、本明細書中に記載されている様々な方法、処理、または機能を実行してもよい。代わりに、これらの方法、処理、または操作は、ハードウェア、ファームウェア、および／またはハードウェア、ファームウェアおよびソフトウェアの任意の組み合わせにより定義できる。そのため、メモリ２０４には、有形で非一時的なコンピュータ読取可能な記録媒体を含めてもよく、この記憶媒体には、１以上のプロセッサによる実行の際に、本明細書または添付図面に開示された方法、処理、または機能の何れかをマイクロコントローラ２０１および／または印刷デバイス２００に実行させるプログラム命令が格納されている。
【００３５】
入出力部２０６は、図１Ａ乃至図６Ｃに記載されているようなプロセッサ２０２およびマイクロコントローラ２０１の操作を構成および／または制御するために役立ててもよい。入出力部２０６は、また、プロセッサ２０２により実行される操作に基づく出力を提供してもよい。
【００３６】
表示されていないが、印刷デバイス２００には、それ自身の専用プロセッサ、メモリ、入出力部、および／またはシステムバスを含めてもよい。印刷デバイス・プロセッサには、１以上の汎用プロセッサおよび／または１以上の専用プロセッサ（例えば、特定用途向け集積回路（ＡＳＩＣ）またはデジタル・シグナル・プロセッサ（ＤＳＰ）、など）のような１以上の中央処理装置（ＣＰＵ）、および／または１以上のマイクロコントローラ（例えば、マイクロコントローラ２０１）を含めてもよい。印刷デバイス・プロセッサには、マイクロコントローラ２０１を含めてもよいが、他の実施形態においては、マイクロコントローラ２０１は、印刷デバイス・プロセッサとは分離させてもよい。印刷デバイス・プロセッサには、マイクロコントローラ２０１とは異なるマイクロコントローラを含めてもよい。印刷デバイス・プロセッサの他の構成も可能である。印刷デバイス２００は、クライアント装置またはサーバのような、ネットワーク装置でもよい。表示されていないが、印刷デバイス２００には、ネットワークを介した他の装置との通信をサポートするネットワークインターフェイスを含めてもよい。
【００３７】
これら例示の印刷デバイスは、例証目的に提供される。上記の例に加えおよび／または代わりに、プリンタとコンピュータ技術の他のコンビネーションおよび／またはサブコンビネーションは、いくつかある可能性の中でも特に、本明細書中の実施形態の要旨を逸脱しない範囲で存在してもよい。
［３．構成およびランタイムステージ］
【００３８】
図３は、例示のステートマシン実行のループ階層３００を示す。図３において、処理タスクはループ階層３００に基づき分類される。図３の処理タスクは、印刷デバイス２００により実行されるジョブに関連付けられている。ジョブは、２次元画像をレンダリングするためのものでもよい。しかしながら、他の実施形態においては、他のジョブも可能でもよい。また、他の実施形態においては、異なるループ階層を利用してもよい。さらに、印刷デバイス２００とは異なるコンピューティング・デバイスを、ジョブの実行のために利用してもよい。
【００３９】
図３に示された実施形態に関しては、印刷デバイス２００は、１以上のページを含むジョブを処理してもよい。各ページは、１つのプリンタ定義言語（ＰＤＬ）で記述されてもよい。各ページには、数千もの順序を含めてもよい。順序の例には、文字、多角形、三角形、またはベクトルが含まれる。他のタイプの順序も可能である。
【００４０】
各順序には、１以上のオブジェクトが含まれる。例示のオブジェクトには、スキャンライン・テーブル、フレーム、台形、または他のオブジェクトが含まれる。スキャンライン・テーブル・オブジェクトは、任意の形状を表す一方、フレーム・オブジェクトは矩形を表す。他のオブジェクトも可能である。
【００４１】
各オブジェクトには、１以上の平面が含まれる。平面の例には、テキスト平面、カラー平面（シアン、マゼンタ、イエロー、またはブラック）、透明性平面、ベクトル平面、画像平面、または作業平面が含まれる。各オブジェクトには、アクティブないくつかの平面および非アクティブな他の平面を含めてもよい。例えば、オブジェクトが白黒で描かれる場合、ブラックの平面のみがアクティブである一方、シアン、マゼンタ、およびイエローの平面は非アクティブでもよい。実施形態によっては、オブジェクトには、８つものアクティブな平面を含めてもよい。
【００４２】
各オブジェクトおよび各アクティブな平面には、オブジェクトを１以上の平面により定義されたように生成するための１以上のラインを含めてもよい。例えば、ブラックの部分および別々のシアンの部分を含むフレーム・オブジェクト（矩形）は、オブジェクトのブラックの部分に対応するブラックの平面により定義されて描かれたライン、およびオブジェクトのシアンの部分に対応するシアンの平面により定義されて描かれたラインを有してもよい。オブジェクトには、必要に応じた多数のラインを含めてもよい。例えば、場合によっては、オブジェクトには、何百もの線分を含めてもよい。しかしながら、オブジェクトには、より多い、またはより少ないラインを含めることができる。このように、オブジェクトを描くために、多数のラインがオブジェクトの１以上の平面により描かれ、定義されてもよい。
【００４３】
ジョブおよび／またはページに関連付けられている処理タスクは、コンピューティング・デバイスのＣＰＵにより処理されてもよい。ＣＰＵタスクには、ジョブまたは１以上のページに対する、ＰＤＬの解釈、メモリの配分、および／または他のタスクを含めてもよい。特定の順序、オブジェクト、平面、またはラインに関連付けられている処理タスクは、印刷デバイス２００のマイクロコントローラ２０１のような、マイクロコントローラにより処理されてもよい。他の実施形態においては、他のハードウェアおよび／またはコンピューティング・デバイスが、ジョブ、ページ、オブジェクト、平面、および／またはラインに関連付けられている処理タスクを処理してもよい。
【００４４】
図３は、マイクロコントローラ２０１により実行されるタスクに対するループ階層３００を示す。例えば、特定の順序３０５に対し、マイクロコントローラ２０１は、まず順序を解析し（ブロック３０６参照）、続いて順序を構成してもよい（ブロック３０７参照）。一旦、順序が構成されると、順序のオブジェクトの全てが、構成された順序で処理されてもよい。上述のように、各順序には、１以上の平面を含めてもよい。このように、各オブジェクトに対し、平面が処理されてもよい。
【００４５】
特定の平面３２０に対し、マイクロコントローラは、最後の平面が処理されたかどうか判断する（ブロック３２１参照）。処理されていない場合、マイクロコントローラは、平面がアクティブな平面かどうか判断する（ブロック３２２参照）。平面が非アクティブな場合、マイクロコントローラは非アクティブな平面をスキップし（ブロック３２６参照）、次の残りの平面の処理に進む。代わって、平面が残っていない場合、マイクロコントローラは、次のオブジェクトを処理してもよい。特定の順序のオブジェクトの全てが処理された場合、マイクロコントローラは、次の順序の処理に進んでもよい。
【００４６】
特定の平面がアクティブな平面３３０である場合、アクティブな平面は、まずレンダリングされ（ブロック３３１参照）、続いて構成される（ブロック３３２参照）。一旦、平面が構成されると、ライン操作３４０が実行されてもよい。実行されるライン操作は、処理されるオブジェクトのタイプに依存してもよい。図３において、スキャンライン・テーブル・オブジェクト・ライン操作３４１は、スキャンライン・テーブル・オブジェクトに対して実行される。フレーム・オブジェクト・ライン操作３４２は、フレーム・オブジェクトに対して実行される一方、他のオブジェクト・ライン操作３４３は、他のオブジェクトに対して実行される。
【００４７】
図３に示される実施形態において、ライン操作３４０は、ランタイムステージの間にリアルタイムで実行されてもよい。さらに、アクティブな平面３３０、非アクティブな平面３２５、全ての平面３２０、および順序３０５に関連付けられているタスクは、リアルタイム実行より先に構成ステージの間に実行されてもよい。ランタイムステージのリアルタイム実行より先に構成ステージの間に順序３０５、平面３２０、３２５、および３３０に関連付けられている処理タスクを実行することにより、マイクロコントローラ２０１によるリアルタイム処理を向上させることができる。
【００４８】
図３の実施形態が順序、平面、およびラインに関連付けられている様々なタスク（例えば、タスク３０６、３０７、３２１、３２２、３２６、３３１、３３２、３４１、３４２、３４３）を示す一方、表示されていない他のタスクも、順序、平面、またはラインに関連付けられてもよい。それと共に、実施形態によっては、図３に示されるタスクは、実行される必要がなくてもよいし、異なる順序で実行されてもよい。それと共に、異なるループ階層も可能である。例えば、ループ階層には、オブジェクトベースごとに実行されるタスクを含めてもよい。
【００４９】
図４は、印刷デバイス２００のマイクロコントローラ２０１により実行される２段階処理４００の一例をブロック図にて示す。表示されている実施形態において、２段階処理４００には、構成ステージ４０５およびランタイムステージ４１０が含まれる。ランタイムステージ４１０のリアルタイム実行より先に実行される構成ステージ４０５を含むことにより、マイクロコントローラ２０１のリアルタイム性能は、向上する。他の実施形態においては、２段階処理４００には、表示されている２つのステージより多いステージを含めてもよい。特に、多数のステージは、ランタイムステージのリアルタイム実行より先に実行されてもよい。２段階処理４００の他の実施形態も可能である。
【００５０】
構成ステージ４０５には、アプリケーションのリアルタイム実行より先に実行される複数のタスクが含まれ、これはランタイムステージ４１０に対応する。表示されている実施形態において、構成ステージ４０５には、中間変数判定４１５、状態遷移リスト構成４２０、およびマスク判定４２５が含まれる。それと共に、構成ステージ４０５には、スキャンライン・テーブル構成４３０、台形構成４３５、および反転マッピング構成４４０を含む、オプションのオブジェクト構成タスクを含めてもよい。実施形態によっては、構成ステージ４０５には、図４に示されるものより多い、少ない、および／または示されるものとは異なるタスクを含めてもよい。
【００５１】
中間変数は、特定のオブジェクトに対する構成ステージ４０５の中間変数判定４１５のタスクの間に決定される。中間変数には、ランタイムステージ４１０より先にマイクロコントローラにより評価される静的パラメータを含めてもよい。中間変数判定４１５のステップの間に評価される中間変数は、構成ステージ４０５の間の他のステップの間に利用されてもよい。例えば、状態遷移リスト構成４２０、マスク判定４２５、スキャンライン・テーブル構成４３０、台形構成４３５、および／または反転マッピング構成４４０のようなステップは、中間変数判定４１５のステップの間に評価される１以上の中間変数に依存してもよい。中間変数は、また、ランタイムステージ４１０の間に依存されてもよい。
【００５２】
状態遷移リスト構成４２０は、特定のオブジェクトに対する所定の状態の連結リストを生成する。連結リストには、特定のオブジェクトに対してランタイムステージ４１０の間に実行される複数の所定の状態を含めてもよい。状態遷移連結リストは、外側ループ、外側ループ・タスク、外側ループ条件、および／または他のループまたはループ部分を評価することにより、構成ステージ４０５の間に生成されてもよい。例えば、リストは、順序３０５ごとに、平面３２０ごとに、非アクティブな平面３２５ごとに、またはアクティブな平面３３０ごとに行われるタスクと見なされてもよいタスクを実行することにより、構成ステージ４０５の間に生成されてもよい（図３参照）。
【００５３】
他の例に関して、図１Ｂは、所定の状態遷移リストを生成するために構成ステージ４０５の間に事前評価されてもよい１以上の条件１２１乃至１３５および１以上のタスク１４１乃至１４６を示してもよい。前述のように、構成ステージ４０５の間に、条件１２１、１２３、１２４、１２５及び１２６は、「ｎｏ」として事前評価され、条件１２２、１２７および１２８は、「ｙｅｓ」として事前評価されてもよい。その結果、状態１０４は状態１０３に続くであろう。図１Ｂの条件を事前評価することにより、所定の状態遷移リストには、ここで、状態１０３および１０４、および状態１０３が状態１０４に先行するという情報を含めてもよい。構成ステージ４０５の間、状態１０４は、続いて状態１０４に続くべき状態を事前に決定するために事前評価されてもよい。
【００５４】
他の例に関して、図１Ｃは、２段階実行を行うステートマシン１５０の状態遷移図を示す。具体的に言うと、図１Ｃの状態遷移リストには、以下の順序の以下の状態を含めてもよい：状態１０１、状態１０２、状態１０３、状態１０４、状態１０５、状態１０６、状態１０７、状態１０８、状態１０９、および状態１１０。図１Ａに関して前述のように、各状態は、印刷デバイス２００および／またはマイクロコントローラ２０１のメモリに格納されるソフトウェア・コードの一部を表してもよい。一実施形態においては、状態遷移リストは、連結リストとして格納される。しかしながら、他の実施形態においては、状態遷移リストは、異なる方法で格納されてもよい。それと共に、他の実施形態においては、より多い、より少ない、および／または異なる状態が、状態遷移リストの一部として格納されてもよい。それと共に、状態は、図１Ｃに示され、または説明されている順序とは異なる順序で格納されてもよい。
【００５５】
所定の状態遷移連結リストの各所定の状態は、各所定の状態に関連付けられている所定のアクションを有してもよい。例えば、マイクロコントローラによる、状態１０３のような、所定の状態の実行には、状態１０４のような、次の状態に遷移するより先に所定のアクションを実行することが要求されてもよい。図１Ｂを参照すると、状態１０３に対する所定のアクションは、状態１０４の実行より先にタスク１４３またはタスク１４４を実行することでもよい。実施形態によっては、状態１０３には、状態１０３に対する所定のアクションの一環として他のタスク（図示せず）を含めてもよい。代わりに、状態１０３には、実施形態によっては、多数の所定のアクションを含めてもよい。図１Ｂには示されないが、実施形態によっては、状態１０３に対するタスク１４１乃至１４６のうち１以上のような、特定の状態に対する所定のアクションは、状態１０３に対する条件１２１乃至１３５のような、状態に対する任意の条件を評価せずに実行されてもよい。所定のアクションは、ランタイムステージ４１０の間に実行されてもよい。しかしながら、特定の所定の状態に対する所定のアクションは、構成ステージ４０５の間に決定されてもよい。
【００５６】
実施形態によっては、所定の状態に対する所定のアクションには、１以上のタスクを含めてもよい。タスクは、１以上の装置に制御出力を送信するマイクロコントローラに対応してもよい。実施形態によっては、マイクロコントローラは、１以上の装置の第１サブセットは１以上の装置の第２サブセットに制御出力を送信する前に、準備できていると判断する。１以上の装置への制御出力の送信は、一実施形態においては所定の状態の所定のアクションであってよいが、他の実施形態においては、所定の状態に対する所定のアクションの一環として、追加のタスクが制御出力の送信に加えて実行されてもよい。代わりに、所定の状態に対する所定のアクションは、所定の状態に対する条件を評価することでもよい。例えば、実施形態によっては、所定のアクションは、図２Ｂの状態１０３のような、特定の状態に対する、図２Ｂの条件１２１乃至１３５のような、条件を評価することでもよい。所定の状態に対する他の所定のアクションも可能である。
【００５７】
状態遷移リストは、マイクロコントローラのような、ハードウェアに、オブジェクトに対する状態遷移リストの現在の所定の状態、１以上の次の所定の状態、および／または最終的な所定の状態を決定させてもよい。マイクロコントローラは、次の所定の状態に対する１以上の所定のアクションの実行に進む前に、所定の状態に対する１以上の所定のアクションをランタイムステージ４１０の間にリアルタイムで実行してもよい。実施形態によっては、マイクロコントローラは、生成された状態遷移リストの所定の状態に対応する所定のアクションをランタイムステージ４１０の間にリアルタイムで実行する。マイクロコントローラは、状態遷移リストを決定するために構成ステージ４０５の間、中間変数に依存してもよい。マイクロコントローラは、また、状態遷移リストの所定の状態の所定のアクションを実行する一方、ランタイムステージ４１０の間、中間変数に依存してもよい。
【００５８】
ランタイムステージ４１０の間、マイクロコントローラは、まず、状態遷移リストに基づきオブジェクトに対する現在の所定の状態を決定してもよい。マイクロコントローラは、続いて、次の所定の状態に進む前に、現在の所定の状態に対する所定のアクションを実行してもよい。一旦、マイクロコントローラが所定の状態に対する所定のアクションを完了させると、マイクロコントローラは、次の所定の状態を決定するために状態遷移リストを利用してもよい。一旦、次の所定の状態がマイクロコントローラにより決定されると、マイクロコントローラは、次の所定の状態を現在の状態として設定し、他の所定の状態に進む前に、新しい現在の状態に関連付けられている所定のアクションを実行してもよい。マイクロコントローラは、最終的な所定の状態に遭遇するまで、この処理を繰り返してもよい。マイクロコントローラは、オブジェクトの処理を完了させるため最終的な所定の状態に関連付けられている所定のアクションを実行してもよい。マイクロコントローラは、続いて、次のオブジェクトの処理に進んでもよい。順序の全てのオブジェクトが処理されると、マイクロコントローラは、次の順序の処理に進んでもよい。
【００５９】
構成ステージ４０５の間に状態遷移リストを生成することにより、マイクロコントローラは、順番に処理するためのリアルタイム性能を向上させることができる。具体的に言えば、マイクロコントローラは、未評価の条件に基づき今後の状態を決定することに時間をかけることなく、リアルタイムで所定の状態に対する所定のアクションを実行するための状態遷移リストを利用できる。その結果、マイクロコントローラのリアルタイム性能は、流線型のランタイムステージにより向上する。
【００６０】
マスク判定４２５は、状態遷移リストの各所定の状態に対するマスクを生成する。具体的に言えば、マスク判定４２５は、各所定の状態に対する状態マスクおよび制御マスクを生成してもよい。他の実施形態においては、マスク判定４２５は、記述されているマスクより多い、少ない、および／または記述されているマスクとは異なるマスクを生成してもよい。
【００６１】
状態マスクは、特定の状態に対して、どの装置が状態を監視するかを示すために利用されてもよい。同じく、制御マスクは、特定の状態に対して、どの装置に制御出力を送信するかを示すために利用されてもよい。一実施形態においては、状態マスクには、各ビットが特定の装置に対応する、１以上のビットを含めてもよい。装置を監視すべき場合、装置状態ビットは１に等しい一方、装置を監視すべきではない場合、装置状態ビットは０に等しくてもよい。同じく、制御マスクにも、各ビットが特定の装置に対応する、１以上のビットを含めてもよい。装置が制御出力を受信するべきである場合、対応する装置制御ビットは１に等しい一方、装置が制御出力を受信すべきではない場合、対応する装置制御ビットは０に等しくてもよい。
【００６２】
記述されている実施形態では、装置状態および装置制御に対して２進値を利用しているが、他の実施形態においては、装置状態および／または装置制御は、２つより多い可能性のある値を有してもよい。例えば、装置状態は、「ビジー」、「レディー」、および「エラー」の値を有する可能性がある。装置制御は、「オフ」、「ロー」、および「ハイ」の値を有してもよい。装置状態および制御に対する他の値も可能である。それと共に、他の実施形態においては、状態マスクおよび／または制御マスクは、異なる方法で実行されてもよい。例えば、「ＡＮＤ」操作および／または「ＸＯＲ」操作（図５参照）は、マスクが２進ではない値を利用する場合、状態マスクおよび／または制御マスクに利用されなくてもよい。
【００６３】
ランタイムステージ４１０の間、状態マスクは、どの装置が状態を監視されるべきか決定するために利用されてもよい。特に、状態マスクは、装置状態入力ベクトルを用いた「ＡＮＤ」操作を経て、監視する装置を表すビットを含む出力ベクトルを生成できる。装置状態入力ベクトルには、各ビットが状態を監視する可能性のある装置を表す、１以上のビットを含めてもよい。装置状態入力ベクトルに対するビットの数は、状態マスクに対するビットの数と同一でもよい。さらに、状態マスクのビットは、装置状態入力ベクトルのビットによって表される装置と同一の装置に対応してもよい。
【００６４】
状態マスクおよび装置状態入力ベクトルを用いた「ＡＮＤ」操作を使用することにより、状態マスクは、装置の対応する装置状態ビットに対する０のエントリを有することによって、装置が監視されることを防ぐことができる。そうでなければ、装置に対応する状態マスク・ビットが１のエントリを有し、同一の装置に対応する装置状態入力ベクトルビットも１のエントリを有する場合、「ＡＮＤ」操作は、その特定の装置に対する１のエントリを用いてベクトルを作成してもよい。出力ベクトルの１は、特定の装置が状態を監視されるべきであることを示してもよい。しかしながら、監視する装置を決定する状態マスクを実行する他の実施形態も可能である
【００６５】
ランタイムステージ４１０の間、制御マスクは、どの装置が制御出力を受信すべきか決定するために利用されてもよい。具体的に言えば、制御マスクは、装置制御入力ベクトルを用いた「ＡＮＤ」操作を経て、制御する装置を表すビットを含む装置制御出力ベクトルを生成してもよい。装置制御入力ベクトルには、各ビットが制御する可能性のある装置を表す、１以上のビットを含めてもよい。装置制御入力ベクトルのビットの数は、制御マスクのビットの数と同一でもよい。制御マスクのビットは、装置制御入力ベクトルの制御ビットによって表される装置と同一の装置に対応してもよい。
【００６６】
制御マスクおよび装置制御入力ベクトルを用いた「ＡＮＤ」操作を使用することにより、制御マスクは、装置の対応する制御ビットに対する０のエントリを有することによって、装置が制御されることを防いでもよい。そうでなければ、制御マスクおよび装置制御入力ベクトルにおける装置の対応するビットが１のエントリを有する場合、「ＡＮＤ」操作は、その特定の装置に対する１のエントリを用いて装置制御出力ベクトルを作成してもよい。装置制御出力ベクトルの１は、特定の装置が制御されるべきであることを示してもよい。しかしながら、装置を制御する制御マスクを実行する他の実施形態も可能である。
【００６７】
状態マスクおよび制御マスクは、マイクロコントローラが外側ループ・タスクおよび条件を実行するのと同時に、構成ステージ４０５の間に決定されてもよい。具体的に言えば、状態遷移リストの各所定の状態に対して、マイクロコントローラは、マイクロコントローラに関連付けられている一連の装置の内、どの装置が状態を監視される必要があるか、および／または、どの装置が制御される必要があるかを判断してもよい。例えば、図１Ｂを参照すると、マイクロコントローラは、条件１２２が特定の装置状態の監視を要求する状態１０３に対する判断をしてもよい。その結果、マイクロコントローラは、構成ステージ４０５の間に、条件１２２の特定の装置に対応する状態マスク・ビットに対する１の値を含む状態１０３に対して、状態マスクを生成してもよい。他の例に関して、図１Ｂを参照すると、マイクロコントローラは、タスク１４５が選択された装置に制御出力を送信することを含む状態１０３に対する判断をしてもよい。このように、マイクロコントローラは、構成ステージ４０５の間に、選択された装置に対応する制御マスク・ビットに対する１の値を含む状態１０３に対して、制御マスクを生成してもよい。実施形態によっては、構成ステージ間の状態の評価は、１に等しい対応するビットを設定することにより監視および／または制御されるように指定される、より多い、より少ない、および／または異なる装置を状態マスクおよび／または制御マスクに備えさせてもよい。他の実施形態においては、制御マスクおよび状態マスクは、異なる方法で生成されてもよい。マイクロコントローラは、また、マスク判定４２５の間に中間変数を利用して、１以上のマスク（例えば、状態マスク、制御マスク）を決定してもよい。
【００６８】
状態マスクおよび制御マスクのような、マスクを生成することにより、特定の状態に対して、各状態のリアルタイム実行は短縮でき、これはマイクロコントローラのリアルタイム実行性能を向上させる。具体的に言えば、関連付けられている装置および状態マスクまたは制御マスク間の単一の「ＡＮＤ」操作は、特定の状態に対するどの装置が状態を監視、または制御される必要があるかを示している。その結果、マイクロコントローラは、要求された装置のみに関して、リアルタイムで装置状態を検索し、装置に制御出力を送信することができる。このように、マイクロコントローラのリアルタイム実行は、より効率的になる。そのため、マスクは、マイクロコントローラのリアルタイム性能を向上させることができる。
【００６９】
構成ステージ４０５の間、１以上のオブジェクト構成タスクもマイクロコントローラにより実行されてもよい。例えば、マイクロコントローラは、スキャンライン・テーブル・オブジェクトに対するスキャンライン・テーブル構成４３０、台形オブジェクトに対する台形構成４３５、または反転マッピング・オブジェクトに対する反転マッピング構成４４０を実行してもよい。フレームのような、他のオブジェクトも、構成ステージ４０５の間に構成されてもよい。
【００７０】
特定の状態に対してランタイムステージ４１０の間に実行されるタスクは、どのオブジェクトが処理されたかに依存するであろう。例えば、オブジェクトがスキャンライン・テーブルの場合、ランタイムステージ４１０には、スキャンライン・テーブル・オブジェクト４４５に対するタスクの実行が含まれるだろう。代わって、オブジェクトがフレーム・オブジェクトの場合、ランタイムステージ４１０には、フレーム・オブジェクト４５０に対するタスクの実行が含まれるだろう。代わって、ランタイムステージ４１０の間、タスクは、台形のような、他のオブジェクト４５５に対して実行されてもよい。タスクには、状態遷移リスト構成４２０の間に決定されるリストの１以上の所定の状態の実行、各所定の状態に対するマスク判定４２５の間に決定される状態マスクまたは制御マスクの適用、および／または他のタスクが含まれてもよい。ランタイムステージ４１０は、マイクロコントローラによりリアルタイムで実行されてもよい。他の実施形態においては、様々なタスクが、ランタイムステージ４１０の間に実行されてもよい。
［４．装置状態判定］
【００７１】
図５は、１以上の装置の装置状態の決定の一例をブロック図にて示す。装置状態は、ランタイムステージ４１０のリアルタイム実行の間に決定されてもよい。図５において、示された実施形態には、装置状態入力ベクトル５０５、極性５１０、状態マスク５１５、「ＸＯＲ」操作５２０、「ＡＮＤ」操作５２５、および装置状態出力ベクトル５３０が含まれる。他の実施形態においては、ブロック図には、図５に示されているよりも多い、少ない、および／または示されているものとは異なる構成要素が含めてもよい。
【００７２】
極性５１０は、反転された装置自身の状態ビットを有する１以上の装置を示してもよい。極性５１０には、１以上のビットを含めてもよい。各ビットは、装置に対応してもよい。図５に示されている実施形態においては、極性５１０には、装置状態入力ベクトル５０５と同数のビットが含まれる。さらに、極性５１０のビットは、装置状態入力ベクトル５０５のビットと同一の装置に対応する。このように、極性５１０は、装置状態入力ベクトル５０５の何れの装置がその装置の反転された状態ビットを有すべきかを示してもよい。例えば、極性５１０に対し、対応する装置のビットは、装置状態ビットが装置状態入力ベクトル５０５の同一の対応する装置に対して反転されるべきである（例えば、０から１へ、または１から０へ）ことを示す、１に設定できる。極性５１０はいつ装置状態ビットを反転するべきかを示すため、極性は、「ＸＯＲ」操作５２０を使用することにより装置状態入力ベクトル５０５に適用される。
【００７３】
なぜ状態ビットを反転してもよいかには、種々な理由がある。例えば、１つのアプリケーションにおいては、マイクロコントローラは、１以上の装置状態入力が１以上の装置は「レディー」であると示すことを決定した後、所定のアクションを実行してもよい。マイクロコントローラは、「ＡＮＤ」操作に依存して、１以上の装置が「レディー」であることを判断してもよい。その結果、各装置状態入力は、装置が「レディー」であることを示す１の装置状態ビットを有してもよい。
【００７４】
しかしながら、装置によっては、装置が「ビジー」であるか否かを示す装置状態を有してもよい。例えば、装置は、装置が「ビジー」であることを示す１の装置状態ビット、および装置が待機中または「レディー」であることを示す０の装置状態ビットを有してもよい。このように、マイクロコントローラは、１の装置状態ビットが装置は待機中または「レディー」であることに対応し、０に等しい装置状態ビットが装置は「ビジー」または利用できないことに対応するように、装置状態ビットを反転してもよい。かかる場合には、極性５１０は、どの装置が反転可能な装置状態ビットを有するかを示すことができる。
【００７５】
図５において、マイクロコントローラは、「ＸＯＲ」操作５２０を装置状態入力ベクトル５０５および極性５１０に適用することにより、極性５１０に基づき装置状態入力ベクトル５０５の１以上のビットを反転させてもよい。「ＸＯＲ」操作５２０の実行後、マイクロコントローラは、続いて、状態マスク５１５および「ＸＯＲ」操作５２０の結果に「ＡＮＤ」操作５２５を適用し、装置状態出力ベクトル５３０を決定してもよい。装置状態出力ベクトル５３０は、どの装置状態の値が監視される必要があってもよいを示す。装置状態出力ベクトル５３０は、また、１の装置状態ビットが装置は「レディー」であることを示すように、装置状態ビットの方向を修正する。「ＸＯＲ」操作５２０および「ＡＮＤ」操作５２５は、ソフトウェア（例えば、ランタイムステージ４１０コード）またはハードウェア（例えば、マイクロコントローラ・ハードウェア、コンピューティング・デバイス・ハードウェア、論理ゲート、および／または他のハードウェア）により実行されてもよい。
【００７６】
このように、ランタイムステージ４１０の間、マイクロコントローラは、特定の状態に対する装置状態入力ベクトル５０５、極性５１０、および状態マスク５１５を読み込み、装置状態入力ベクトル５０５および極性５１０に「ＸＯＲ」操作５２０を適用し、状態マスク５１５および「ＸＯＲ」操作５２０の結果に「ＡＮＤ」操作５２５を適用して、装置状態出力ベクトル５３０を生成してもよい。マイクロコントローラは、続いて、装置状態出力ベクトル５３０に基づき装置状態を検索する。マイクロコントローラは、また、装置状態出力ベクトル５３０に基づき、必要に応じて検索された装置状態ビットを反転させる。マイクロコントローラは、続いて、１以上の検索された装置状態の値を利用して、所定の状態の所定のアクションを実行してもよい。一旦、所定のアクションが実行されると、マイクロコントローラは、続いて、次の状態に進んでもよい。他の実施形態においては、装置状態、状態マスク、および／または極性は、図５に示されるものとは異なる方法で実行または利用されてもよい。
［５．方法の例］
【００７７】
図６Ａは、マイクロコントローラ２０１のような、マイクロコントローラにより実行される方法６００の一例をフローチャートにて示す。方法６００は、２次元画像をレンダリングする１以上のオブジェクトを含む順序に対するオブジェクトのデータを処理する第１ステージの実行から開始され、各オブジェクトには、ブロック６０５により示されるような、２次元画像に対する画像データが含まれる。例えば、図４を参照すると、方法６００の間に実行される第１ステージは、構成ステージ４０５に対応してもよい。処理される順序のオブジェクトは、スキャンライン・テーブル、フレーム、台形、またはいくつかの他のオブジェクトでもよい。方法６００は、続いて、ブロック６１０により示されるような、オブジェクトのデータを処理する第２ステージの実行に進む。図４を参照すると、例えば、方法６００の間に実行される第２ステージは、ランタイムステージ４１０に対応してもよい。ランタイムステージ４１０の間、方法６００は、スキャンライン・テーブル・オブジェクト４４５、フレーム・オブジェクト４５０、またはいくつかの（台形を含む）他のオブジェクト４５５の処理を実行してもよい。
【００７８】
図６Ａは方法６００の複数のステップを示しているが、実施形態によっては、方法６００には、図６Ａに示されているよりも多い、少ない、および／または示されているものとは異なるステップを含めてもよい。例えば、方法６００には、２次元画像をレンダリングする順序に対する画像データでオブジェクトを処理する２つより多いステージを含めてもよい。方法６００には、図４の構成ステージ４０５に対応する第１ステージ６０５とは異なるステージ、および図４のランタイムステージ４１０に対応する第２ステージ６１０とは異なるステージを含めてもよい。実施形態によっては、方法６００は、印刷デバイス２００のような、コンピューティング・デバイスのマイクロコントローラ２０１により実行される。しかしながら、他のコンピューティング・デバイスに、方法６００を実行するマイクロコントローラを含めてもよい。それと共に、マイクロコントローラ２０１以外のハードウェアが、方法６００を実行してもよい。
【００７９】
図６Ｂは、図６Ａの方法６００の第１ステージ６０５を実行する、例示の方法６１１をフローチャートにて示す。例示の方法６１１は、図２に示されるように、印刷デバイス２００に対するマイクロコントローラ２０１により実行されてもよい。図４を参照すると、方法６１１は、構成ステージ４０５に対応してもよい。方法６１１は、２次元画像をレンダリングする順序に対するオブジェクトの画像データを処理する方法６００の一環として実行されてもよい。
【００８０】
方法６１１は、ブロック６１５により示されるように、複数の中間変数の決定から開始される。図４を参照すると、例えば、マイクロコントローラ２０１は、構成ステージ４０５の間に中間変数判定４１５を完了させてもよい。次に、方法６１１は、続いて、ブロック６２０により示されるように、オブジェクトに対して、複数の中間変数に基づき状態遷移リストを生成してもよく、状態遷移リストには、複数の所定の状態が含まれ、各所定の状態は、所定のアクションに関連付けられている。例えば、図４を参照すると、ブロック６２０は、状態遷移リスト構成４２０に対応してもよく、状態遷移リスト構成４２０は、マイクロコントローラ２０１により構成ステージ４０５の間に実行される。
【００８１】
方法６１１は、ブロック６２５に示されるように、各所定の状態に対して、プロセッサに関連付けられている１以上の装置から、装置状態を監視する装置の第１サブセットを決定することにより継続される。方法６１１は、ブロック６３０に示されるように、各所定の状態に対して、プロセッサに関連付けられている１以上の装置から、制御する装置の第２サブセットを決定することにより進行する。図４を参照すると、装置の第１および第２の両サブセットは、構成ステージ４０５の間のマスク判定４２５の間に決定されてもよい。プロセッサは、マイクロコントローラ２０１に対応してもよい。
【００８２】
図６Ｂは方法６１１の複数のステップを示しているが、実施形態によっては、方法６１１には、図６Ｂに示されているよりも多い、少ない、および／または示されているものとは異なるステップを含めてもよい。例えば、方法６１１には、各所定の状態に対する装置の第１サブセットの状態マスクの生成、および各所定の状態に対する装置の第２サブセットの制御マスクの生成のステップが含まれ得る。図４を参照すると、状態マスクおよび制御マスクの両方が、構成ステージ４０５の間のマスク判定４２５の間に決定されてもよい。さらに、図６Ｂのステップは、図６Ｂに示される順序とは異なる順序で実行されてもよい。実施形態によっては、方法６１１は、印刷デバイスのマイクロコントローラ（例えば、印刷デバイス２００のマイクロコントローラ２０１）により実行される。しかしながら、他の実施形態においては、マイクロコントローラを含む異なるコンピューティング・デバイス、またはプロセッサが、方法６１１を実行してもよい。それと共に、マイクロコントローラ以外のハードウェアが、方法６１１を実行してもよい。
【００８３】
図６Ｃは、図６Ａの方法６００の第２ステージ６１０を実行する、例示の方法６４１をフローチャートにて示す。例示の方法６４１は、図２に示されるように、印刷デバイス２００に対するマイクロコントローラ２０１により実行されてもよい。図４を参照すると、方法６４１は、ランタイムステージ４１０に対応してもよい。方法６４１は、２次元画像をレンダリングする順序に対するオブジェクトの画像データを処理する方法６００の一環として実行されてもよい。
【００８４】
方法６４１は、ブロック６５０により示されるように、状態遷移リストに基づき現在の所定の状態を決定することにより開始される。次に、方法６４１は、ブロック６５５により示されるように、現在の所定の状態に対する装置の第１サブセットの装置状態を決定することにより継続される。方法６４１は、ブロック６６０により示されるように、現在の所定の状態に対する装置の第２サブセットに出力を送信することにより進行する。方法６４１は、続いて、ブロック６６５により示されるように、状態遷移リスト、および現在の所定の状態に対する装置の第１サブセットの装置状態に基づき、現在の所定の状態の所定のアクションの実行に進んでもよい。図４を参照すると、方法６４１のブロック６５０、６５５、６６０、および６６５は、ランタイムステージ４１０の間に実行されてもよい。
【００８５】
方法６４１は、続いて、ブロック６７０により示されるように、状態遷移リストに基づき次の所定の状態を決定してもよい。次に、方法６４１は、ブロック６７５により示されるように、現在の所定の状態の所定のアクションの実行完了後、次の所定の状態に進んでもよい。ブロック６５０、６５５、６６０、および６６５と同様に、ブロック６７０および６７５も、図４に示されるように、ランタイムステージ４１０の間に実行されてもよい。
【００８６】
図６Ｃは方法６４１の複数のステップを示しているが、実施形態によっては、方法６４１には、図６Ｃに示されているよりも多い、少ない、および／または示されているものとは異なるステップを含めてもよい。例えば、方法６４１には、さらに、現在の所定の状態の状態マスクに基づき、現在の所定の状態に対する装置の第１サブセットの装置状態を決定するステップを含めてもよい。それと共に、方法６４１には、現在の所定の状態の制御マスクに基づき、現在の所定の状態に対する装置の第２サブセットに出力を送信するステップを含めてもよい。図４を参照すると、これら追加のステップは、ランタイムステージ４１０の間に実行されてもよい。
【００８７】
さらに、図６Ｃのステップは、図６Ｃに示される順序とは異なる順序で実行されてもよい。実施形態によっては、方法６４１は、印刷デバイス２００のマイクロコントローラ２０１のような、印刷デバイスのマイクロコントローラにより実行される。しかしながら、他の実施形態においては、マイクロコントローラを含む異なるコンピューティング・デバイス、またはプロセッサが、方法６４１を実行してもよい。それと共に、マイクロコントローラ以外のハードウェアが、方法６４１を実行してもよい。
［６．結論］
【００８８】
本出願において記述されている具体的な実施形態に関して、本開示は限定されるべきではなく、それらはいろいろな態様の実例として意図されている。当業者にとって明白であるように、本開示の主旨と範囲から逸脱することなく多くの変更および変形をすることが可能である。本記載に列挙されていることに加え、本開示の範囲内の機能的に等価な方法および装置は前述の記載から明白であろう。そのような変更および変形は、添付された請求項の範囲内に入るように意図されている。
【００８９】
図面における、任意のすなわち全てのラダー図、シナリオ、およびフローチャートに関しておよび本記載で述べられたように、各ブロックおよび／または通信は、例示の実施形態に従って情報を処理しおよび／または情報を送信することを表してもよい。他の実施形態もそのような例示の実施形態の範囲に含まれてもよい。さらに、より多くのもしくはより少ないブロックおよび／または機能が、本記載に記述されているどのラダー図、シナリオ、およびフローチャートと共に使用されてもよいし、また当該ラダー図、シナリオ、およびフローチャートは、部分的にもしくは全体的にお互いに結合されてもよい。
【００９０】
情報の処理を表すステップもしくはブロックは、本記載の方法もしくは技術の具体的な論理機能を実行するように構成することが可能な回路に相当してもよい。それに代えてまたはさらに、情報の処理を表すステップもしくはブロックは、モジュール、セグメント、もしくはプログラムコードの一部分（関連するデータを含めて）に相当してもよい。プログラムコードは、方法もしくは技術における具体的な論理機能もしくは動作を実行するための、処理部により実行可能な一つ以上の命令を含んでもよい。プログラムコードおよび／または関連するデータは、ディスクドライブ、ハードドライブ、もしくはその他の記憶媒体を含む記憶装置等の任意の種類のコンピュータ読み取り可能な媒体に格納してもよい。
【００９１】
コンピュータ読み取り可能な媒体は、また、レジスタメモリ、プロセッサキャッシュ、および／またはランダムアクセスメモリ（ＲＡＭ）のような短期間データを格納するコンピュータ読み取り可能な媒体等の、非一時的でコンピュータ読み取り可能な媒体を含んでもよい。コンピュータ読み取り可能な媒体は、また、例えば、リードオンリーメモリー（ＲＯＭ）、光学もしくは磁気ディスク、および／またはコンパクトディスク・リードオンリーメモリー（ＣＤ―ＲＯＭ）のような、二次的もしくは持続的長期記憶装置等、より長期間プログラムコードおよび／またはデータを格納する非一時的でコンピュータ読み取り可能な媒体を含んでもよい。コンピュータ読み取り可能な媒体は、また、他の揮発性もしくは不揮発性記憶システムであってもよい。コンピュータ読み取り可能な媒体は、例えば、コンピュータ読み取り可能な記憶媒体および／または有形の記憶デバイスと考えてもよい。
【００９２】
加えて、本明細書、図面、請求項内のいずれの構成要素、ブロック、又はステップの列挙も、明確さを目的としたものである。従って、このような列挙は、これらの構成要素、ブロック、またはステップが特定の配置にこだわる、または特定の順序で実行されることを要求または意味すると解釈すべきではない。
【００９３】
本明細書中に記述されている配置は、例示の目的のためのみであることは理解されるべきである。そのように、当業者であれば、他の配置および他の構成要素（例えば、機械、インターフェース、機能、順序、機能のグルーピング、など）が代わりに利用され得ること、およびいくつかの構成要素が所望の結果に従って完全に省略されてもよいことは、理解するであろう。さらに、記載されている構成要素の多くは、個別または分散された構成要素として、または他の構成要素と一緒に、任意の適切な組み合わせおよび位置で実行されてもよい機能エンティティである。
【００９４】
本記載においてさまざまな態様および実施形態が開示されてきたが、他の態様および実施形態も当業者にとって明白であろう。本記載において開示されたさまざまな態様および実施形態は、例示目的であって限定することを意図するものではなく、真の範囲と主旨は以下の請求項により示されている。
【符号の説明】
【００９５】
２００  印刷デバイス
２０１  マイクロコントローラ
２０２  プロセッサ
２０４  メモリ
２０６  入出力部
２０８  マイクロコントローラ・システムバス
【図１Ａ】
2016189188.tif 000003
【図１Ｂ】
2016189188.tif 000004
【図１Ｃ】
2016189188.tif 000005
【図２】
2016189188.tif 000006
【図３】
2016189188.tif 000007
【図４】
2016189188.tif 000008
【図５】
2016189188.tif 000009
【図６Ａ】
2016189188.tif 000010
【図６Ｂ】
2016189188.tif 000011
【図６Ｃ】
2016189188.tif 000012
【外国語明細書】
Computing device, Method, and Program
FIELD
[0001]       The present invention relates to a technique for enhancing performance of a microcontroller in real-time.
BACKGROUND
[0002]       In recent years, demand has risen for a variety of computing devices, including computers, desktops, laptops, servers, printers, scanners, copiers, fax machines, multi-function printing devices, and/or other computing devices.  For these different computing devices, many types of hardware can be used by the computing device to execute tasks.  One type of computing device hardware is a microcontroller.  A microcontroller may include a processor, memory, and an input/output unit for executing tasks for a computing device.  In some applications, a microcontroller may be a low-cost, flexible, high-performance option for executing tasks in a computing device.
SUMMARY
[0003]       In a first aspect, a method including executing, by a microcontroller, a first stage for processing data of an object for an order including one or more objects to render a two-dimensional image, wherein each object includes image data for the two-dimensional image, wherein the first stage includes determining a plurality of intermediate variables; generating, for the object, a state transition list based on the plurality of intermediate variables, wherein the state transition list includes a plurality of predetermined states, wherein each predetermined state is associated with a predetermined action; determining, for each predetermined state, from one or more devices associated with the microcontroller, a first subset of devices to monitor for device status; and determining, for each predetermined state, from the one or more devices associated with the microcontroller, a second subset of devices to control; executing, by the microcontroller, a second stage for processing data of the object, the second stage including determining a current predetermined state based on the state transition list; determining the device status for the first subset of devices for the current predetermined state; sending outputs to the second subset of devices for the current predetermined state; executing the predetermined action for the current predetermined state based on the state transition list and the device status for the first subset of devices for the current predetermined state; determining a next predetermined state based on the state transition list; and proceeding to the next predetermined state after completing execution of the predetermined action of the current predetermined state.
[0004]       In a second aspect, a non-transitory computer readable medium storing executable instructions, wherein executing the instructions causes one or more processors of a microcontroller to execute a method including executing, by one or more processors of a microcontroller, a first stage for processing data of an object for an order including one or more objects to render a two-dimensional image, wherein each object includes image data for the two-dimensional image, wherein the first stage includes determining a plurality of intermediate variables; generating, for the object, a state transition list based on the plurality of intermediate variables, wherein the state transition list includes a plurality of predetermined states, wherein each predetermined state is associated with a predetermined action; determining, for each predetermined state, from one or more devices associated with the one or more processors, a first subset of devices to monitor for device status; and determining, for each predetermined state, from the one or more devices associated with the one or more processors, a second subset of devices to control; executing, by the one or more processors, a second stage for processing data of the object, the second stage includes determining a current predetermined state based on the state transition list; determining the device status for the first subset of devices for the current predetermined state; sending outputs to the second subset of devices for the current predetermined state; executing the predetermined action for the current predetermined state based on the state transition list and the device status for the first subset of devices for the current predetermined state; determining a next predetermined state based on the state transition list; and proceeding to the next predetermined state after completing execution of the predetermined action of the current predetermined state.
[0005]       In a third aspect, a computing device including one or more processors; a memory storing executable instructions, wherein executing the instructions causes the one or more processors to execute a method including executing, by the one or more processors, a first stage for processing data of an object for an order including one or more objects to render a two-dimensional image, wherein each object includes image data for the two-dimensional image, wherein the first stage includes determining a plurality of intermediate variables; generating, for the object, a state transition list based on the plurality of intermediate variables, wherein the state transition list includes a plurality of predetermined states, wherein each predetermined state is associated with a predetermined action; determining, for each predetermined state, from one or more devices associated with the one or more processors, a first subset of devices to monitor for device status; and determining, for each predetermined state, from the one or more devices associated with the one or more processors, a second subset of devices to control; executing, by the one or more processors, a second stage for processing data of the object, the second stage including determining a current predetermined state based on the state transition list; determining the device status for the first subset of devices for the current predetermined state; sending outputs to the second subset of devices for the current predetermined state; executing the predetermined action for the current predetermined state based on the state transition list and the device status for the first subset of devices for the current predetermined state; determining a next predetermined state based on the state transition list; and proceeding to the next predetermined state after completing execution of the predetermined action of the current predetermined state.
[0006]       These, as well as other aspects, alternatives, and advantages, will become apparent to those of ordinary skill in the art by reading the following detailed description, with reference where appropriate to the accompanying drawings.
BRIEF DESCRIPTION OF THE FIGURES
[0007]       Figure 1A illustrates an example state transition diagram;
Figure 1B illustrates an example flow chart of a state action determination;
Figure 1C illustrates an example state transition diagram;
Figure 2 illustrates an example block diagram of a computing device;
Figure 3 illustrates an example flow chart of an example state machine implementation;
Figure 4 illustrates an example block diagram of an example state machine implementation;
Figure 5 illustrates an example block diagram for determining a device status output vector; and
Figures 6A-6C are flowcharts depicting steps for implementing an example state machine.
DETAILED DESCRIPTION
[0008]      In the following detailed description, reference is made to the accompanying figures, which form a part hereof. It should be understood, however, that the arrangements described herein are set forth as examples only. As such, those skilled in the art will appreciate that other arrangements and elements (e.g., machines, interfaces, functions, orders of functions, etc.) can be used instead or in addition. Further, many of the elements described herein are functional entities that may be implemented as discrete or distributed components or in conjunction with other components, and in any suitable combination and location. Various functions described herein as being performed by one or more entities may be carried out by hardware, firmware or software logic. For instance, various functions described herein may be carried out by a processor executing instructions written in any suitable programming language and stored in memory.
[0009]       In this description, the intent of using the conjunction “or” within a described list of at least two terms is to indicate any of the listed terms or any combination of the listed terms. The use of ordinal numbers such as “first,” “second,” “third” and so on is to distinguish respective elements rather than to denote a particular order of those elements. 
1.         Overview
[0010]      Printing devices rely on various types of hardware to execute tasks related to processing documents for printing.  One type of hardware includes application specific integrated circuits (ASIC).  An ASIC can be configured to execute specific tasks.  One benefit of an ASIC is that an ASIC can execute many tasks in parallel.  For example, an ASIC can evaluate thousands of static variables concurrently.  As a result, the computing power of an ASIC can cause excellent performance of a printing device and other associated devices.  
[0011]      However, a drawback of an ASIC is that it lacks flexibility.  In particular, the functionality of the ASIC cannot be modified once it is configured.  As a result, if the configuration of the ASIC needs to be revised to execute different tasks, then the ASIC may need to be replaced.  Replacing the ASIC may be expensive and/or time-consuming.  Reasons that the ASIC may need to be re-configured include protocol changes, improved functionality, correction of defects, modified designs, or other reasons.
[0012]      An alternative type of hardware that can be used by a printing device to execute document processing tasks for printing is a microcontroller.  A microcontroller is a low-cost hardware device that can be configured to execute tasks.  The microcontroller may include a processor, a memory, and input/output devices.  The microcontroller completes the specific tasks for which it’s configured by using the processor to execute software instructions stored on the memory.
[0013]      One benefit of a microcontroller is flexibility.  In particular, if the configuration of a microcontroller needs to be modified for the microcontroller to execute different tasks, then the configuration can be altered by modifying the software stored at the microcontroller.  For example, if the microcontroller needs to be reconfigured due to protocol changes, software bug correction, improved functionality, modified designs, or some other reason, one way the microcontroller can be reconfigured is by downloading and/or storing updated software at the microcontroller.  Hardware may not need to be replaced.  As a result, configuration modification of the microcontroller may be inexpensive.  Thus, the microcontroller is a flexible hardware implementation for a printing device.
[0014]      One drawback of a microcontroller is performance.  In particular, the execution of tasks by a microcontroller is sequential in nature, whereas an ASIC can execute many tasks in parallel.  As a result, for operations requiring many tasks to be executed in real-time, an ASIC may execute the tasks noticeably faster than a microcontroller because the ASIC can execute the tasks in parallel, while the microcontroller executes the task sequentially.
[0015]      The system and method of this disclosure improves the real-time performance of tasks by a microcontroller.  In particular, the microcontroller implements a two-stage solution for executing tasks in real-time.  Specifically, the microcontroller executes a run-time stage in real-time after executing a configuration stage.  Because the configuration stage is completed prior to real-time execution of the application (e.g., the run-time stage), the real-time performance of the microcontroller can be measured based on the run-time stage. 
[0016]      During the configuration stage, the microcontroller evaluates static conditions, branches, and actions to generate a state transition list, pre-evaluated status masks, and pre-evaluated control masks.  The microcontroller may also evaluate static objects and/or variables during the configuration stage.  During the run-time stage, the microcontroller executes predetermined actions based on the generated state transition list, status masks, and control masks. The microcontroller may also evaluate dynamic objects and/or variables during the run-time stage.  A dynamic variable may be a variable that is evaluated during runtime, such as a device status.  Because the configuration stage is executed prior to the run-time stage, the real-time performance of the microcontroller is improved.  
[0017]      While the system and method disclosed can be applied to various computing devices, in the embodiments displayed in figures 1A-6C, the system and method is described for a printing device using a microcontroller.  Additionally, for the embodiments displayed in figures 1A-6C, the system and method described is applied for a two-dimensional image rendering application for a printing device.  However, in other embodiments, the system and method disclosed may be applied to applications.  Also, the system and method disclosed may be executed by different computing devices.  Further, the system and method may be executed by hardware other than a microcontroller.
[0018]      Figure 1A displays a state transition diagram of state machine 100.  The state machine 100 of Figure 1A may be executed in real-time without a two-stage execution.  In the displayed embodiment of figure 1A, the state machine 100 corresponds to processing an order for rendering a two-dimensional image.  The order includes one or more objects containing image data.  However, in other embodiments, the state machine 100 could be for different objects, orders, and/or applications.
[0019]      The state machine 100 includes states 101-110, 151-160, and 171-192.  Each state is represented as a shaded oval.  States 101-110 correspond to states that are executed in real-time.  States 151-160 and 171-192 correspond to states that can be pre-evaluated prior to real-time execution of the state machine 100.  States 151-160 are states that could follow state 103, which is discussed in further detail in figure 1C.  For each state, a portion of software code may be stored in a memory of a computing device for executing the state.
[0020]      The arrows between two states in figure 1A represent possible transitions from one state to another state.  For example, state 179 includes three arrows, one of which points to state 180, another of which points to state 184, and the last of which points to state 185.  Thus, depending on the execution of state 179, the very next state could be state 180, state 184, or state 185.  In some cases, a state may only have one arrow pointing from the state to a next possible state.  For example, state 101 only has one arrow pointing from state 101 to state 102.  This arrow indicates that state 102 may be the only state that can follow state 101.  Thus, when state 101 is complete, execution proceeds to state 102.  
[0021]      Alternatively, transitions between two states may be shown by shaded bubbles overlapping.  For example, states 102 and 103 have overlapping ovals.  In this case, state 102 is executed first, followed by state 103.  When states overlap, the state that has arrows pointing to the state may be the first of the overlapping states to be executed.  The state that contains arrows pointing away from the state may be the second of the overlapping states to be executed.  Thus, for overlapping pairs of states 102 and 103, 104 and 105, and 106 and 107, states 103, 105, and 107 may follow the execution of states 102, 104, and 106, respectively.
[0022]      Figure 1A can be used to illustrate the problem with changing real-time execution of a state machine from an ASIC to a microcontroller.  In particular, changing the hardware may significantly reduce the real-time execution performance of the state machine 100.  As mentioned earlier, an ASIC can be configured to evaluate thousands of static object variables in parallel.  As a result, the state machine in figure 1A, which contains numerous states and transitions, can be evaluated in real-time quickly by an ASIC that executes many tasks in parallel.  In particular, the states may be evaluated to determine which transitions to use to determine the next states to evaluate.  For example, state 179 may be evaluated to determine if the next state is state 180, state 184, or state 185.  An ASIC can evaluate states 179, 180, 184, 185, and/or other states in parallel.  As a result, the real-time performance of the state machine 100 is enhanced.
[0023]      A microcontroller, however, executes tasks serially.  Thus, the microcontroller may execute state 179.  While executing state 179, the microcontroller may then determine if state 180, state 184, or state 185 follows state 179.  After executing state 179, the microcontroller then executes one of state 180, state 184, or state 185, depending on the results of executing state 179.  While executing one of state 180, state 184, or state 185, the microcontroller may also determine the state that follows execution of state 180, state 184, or state 185.  This serial execution of states would apply for many, and possibly all, of the states and/or transitions displayed in state machine 100.  As a result, the execution of state machine 100 in real-time by the microcontroller would likely be significantly longer than real-time execution of the state machine 100 by an ASIC.
[0024]      Figure 1B shows an example diagram displaying state action determination for state 103.  Figure 1B includes states 101, 103, 104, 106, 108, and 151-160.  Figure 1B also includes conditionals 121-135 and tasks 141-146.  In some embodiments, figure 1B may include more, fewer, and/or different states, tasks, and/or conditionals than those displayed in figure 1B.
[0025]      As seen in figure 1B, determining the state that should follow a current state (e.g., state 103) may require the evaluation of many conditionals (e.g., conditionals 121-135) and the execution of one or more tasks (e.g., tasks 141-146).  For an ASIC, this evaluation may not hinder real-time performance because an ASIC can process many conditionals and tasks in parallel.  However, for a microcontroller, processing numerous conditionals and tasks to determine the next state may slow down real-time performance because the microcontroller processes the tasks and conditionals serially.  Thus, real-time execution of an individual state by the microcontroller may have poor performance when compared to an ASIC.
[0026]      One way to address the slower performance of the microcontroller is to implement a two-stage method for executing the state machine 100 in real-time.  In particular, a first stage can be used to pre-evaluate various states (e.g., states 101-110, 151-160, and 171-192) and conditions (e.g., conditionals 121-135 for state 103) prior to real-time execution of the remaining states and conditions of state machine 100.  By pre-evaluating one or more of the states and conditions, the real-time execution of state machine 100 by the microcontroller can be improved.
[0027]      Figure 1C displays real-time execution of state machine 100 with a two-stage execution implemented, which results in state machine 150.  State machine 150 includes states 101-110 of state machine 100.  State machine 150 does not include states 151-160 and states 171-192 from state machine 100.  In particular, when the two-stage execution is implemented, it may be determined during the first stage prior to real-time execution that states 151-160 and states 171-192 are not executed during real-time execution of the state machine 150.  As a result, only states 101-110 are executed in real-time.  Thus, state machine 150 only includes states 101-110.  In some embodiments, one or more of the states 101-110, 151-160 and states 171-192 may be partially or wholly pre-evaluated prior to the real-time execution of states 101-110.
[0028]      By implementing a two-stage execution, the real-time performance of a microcontroller is improved.  Specifically, instead of executing the states and transitions of state machine 100 in real-time, the microcontroller only executes the states and transitions displayed in state machine 150.  For example, state machine 150 only has 10 states to execute (states 101-110), whereas state machine 100 has potentially 42 states to execute (states 101-110, 151-160, and 171-192).  Thus, implementing a two-stage execution can improve the real-time performance of the microcontroller by reducing the number of states and transitions to execute in real-time.
[0029]      Additionally, the two-stage execution can improve the real-time performance of the microcontroller for a particular state.  With reference to figure 1B, one or more of conditions 121-135 may be pre-evaluated prior to real-time execution.  Additionally, one or more of the tasks 141-146 may also be completed prior to real-time execution.  As a result, executing state 103 in real-time may include evaluating fewer, if any, of the conditionals 121-135.  Furthermore, executing state 103 in real-time may include executing fewer, if any, of the tasks 141-146.
[0030]      With reference to figure 1B, in one example, during the first stage, conditionals 121, 123, 124, and 125 may have been evaluated as resulting with a “no,” while conditional 122 may have been evaluated as resulting with a “yes.” Additionally, conditional 128 may have been evaluated with the result of “yes.”  Consequently, the only tasks that may need to be executed in real-time are tasks 142 and 144 before proceeding to the next state, which is state 104.  In some embodiments, tasks 142 and/or 144 may be executed in real-time.  In other embodiments, tasks 142 and/or 144 may be executed during the first stage prior to the real-time execution of the second stage.  Thus, a two-stage execution implementation can improve real-time performance of a microcontroller by reducing the number of states and transitions to process in real-time and by decreasing the number of conditionals and/or tasks to process for a particular state.
[0031]      Although figures 1A and 1C display embodiments of state machines 100 and 150, in other embodiments, the state machines may include more, fewer, and/or different states and/or transitions.  Other configurations of state machines are also possible.
2.         Example Computing Device Components for a Printing Device
[0032]      Figure 2 depicts an example embodiment of printing device 200 with a microcontroller 201.
[0033]      The microcontroller 201 may include a processor 202, memory 204 and input/output unit 206, all of which may be coupled by a microcontroller system bus 208 or a similar mechanism.  Processor 202 may represent one or more processors.
[0034]      Memory 204, in turn, may comprise volatile and/or non-volatile data storage and can be integrated in whole or in part with processor 202. Memory 204 may store program instructions, executable by processor 202, and data that is manipulated by the instructions to carry out the various methods, processes, or functions described herein. Alternatively, these methods, processes, or operations can be defined by hardware, firmware, and/or any combination of hardware, firmware and software. Therefore, memory 204 may include a tangible, non-transitory computer-readable medium, having stored thereon program instructions that, upon execution by one or more processors, cause the microcontroller 201 and/or printing device 200 to carry out any of the methods, processes, or functions disclosed in this specification or the accompanying drawings.  
[0035]      Input/output unit 206 may serve to configure and/or control the operation of processor 202 and microcontroller 201 as described in figures 1A-6C. Input/output unit 206 may also provide output based on the operations performed by processor 202.  
[0036]      Although not displayed, the printing device 200 may include its own dedicated processor, memory, input/output unit, and/or system bus.  The printing device processor may include one or more central processing units (CPUs), such as one or more general purpose processors and/or one or more dedicated processors (e.g., application specific integrated circuits (ASICs) or digital signal processors (DSPs), etc.), and/or one or more microcontrollers (e.g., microcontroller 201).  The printing device processor may include microcontroller 201, however, in other embodiments, microcontroller 201 may be separate from the printing device processor.  The printing device processor may include microcontrollers that are different from microcontroller 201.  Other configurations of the printing device processor are also possible.  The printing device 200 may be a network device, such as a client device or a server.  Although not displayed, the printing device 200 may include a network interface to support communication with other devices over a network.
[0037]      These examples of a printing device are provided for illustrative purposes. In addition to and/or alternatively to the examples above, other combinations and/or sub-combinations of printer and computer technologies may also exist, amongst other possibilities, without departing from the scope of the embodiments herein.
3.         Configuration and Run-time Stages
[0038]      Figure 3 is a diagram of a loop hierarchy 300 for an example state machine implementation.  In figure 3, the processing tasks are categorized based on loop hierarchy 300.  The processing tasks of figure 3 are associated with a job executed by the printing device 200.  The job may be for rendering a two-dimensional image.  However, in other embodiments, other jobs may be possible.  Also, in other embodiments, a different loop hierarchy may be used.  Further, a different computing device from printing device 200 may be used to execute the job.
[0039]      For the embodiment displayed in figure 3, a printing device 200 may process a job that includes one or more pages.  Each page may be described in one printer definition language (PDL).  Each page may include as many as thousands of orders.  Examples of orders include a letter, polygon, triangle, or vector.  Other types of orders are also possible.  
[0040]      Each order includes one or more objects.  Example objects include scanline tables, frames, trapezoids, or other objects.  A scanline table object represents an arbitrary shape, while a frame object represents a rectangle.  Other objects are also possible.  
[0041]      Each object includes one or more planes.  Examples of planes include a text plane, color planes (cyan, magenta, yellow, or black), a transparency plane, a vector plane, an image plane, or a working plane.  Each object may include some planes that are active and other planes that are inactive.  For example, if an object is to be drawn in black and white colors, then only the black plane may be active, while the cyan, magenta, and yellow planes may be inactive.  In some embodiments, an object may include as many as eight active planes.  
[0042]      Each object and each active plane may include one or more lines for generating the object as defined by the one or more planes.  For example, a frame object (rectangular shape) that includes black portions and separate cyan portions may have lines drawn that are defined by a black plane corresponding to the black portion of the object, and lines drawn that are defined by a cyan plane corresponding to the cyan portion of the object.  An object may include as many lines as needed.  For example, in some cases, the object may include as many as hundreds of line segments.  However, an object can include more or fewer lines.  Thus, in order to draw an object, many lines may be drawn and defined by one or more planes of the object.
[0043]      Processing tasks associated with a job and/or a page may be handled by a CPU of a computing device.  CPU tasks may include interpreting a PDL, allocating memory, and/or other tasks for a job or one or more pages.  Processing tasks associated with a particular order, objects, planes, or lines may be handled by a microcontroller, such as microcontroller 201 for printing device 200.  In other embodiments, other hardware and/or computing devices may handle processing tasks associated with a job, page, object, plane, and/or line.
[0044]      Figure 3 displays a loop hierarchy 300 for tasks executed by microcontroller 201. For example, for a particular order 305, microcontroller 201 may first parse the order (see block 306) and then configure the order (see block 307).  Once an order has been configured, all of the objects of the order may then be processed for the configured order.  As mentioned above, each order may include one or more planes.  Thus, for each object, the planes may be processed.
[0045]      For a particular plane 320, a microcontroller determines whether the last plane has been processed (see block 321).  If not, then the microcontroller determines if the plane is an active plane (see block 322).  If the plane is inactive, the microcontroller skips the inactive plane (see block 326) and proceeds to process the next remaining plane.  Alternatively, if no planes are remaining, then the microcontroller may process the next object.  If all of the objects for a particular order have been processed, then the microcontroller may proceed to process the next order.
[0046]      If the particular plane is an active plane 330, then the active plane is first rendered (see block 331) and then configured (see block 332).  Once the plane is configured, line operations 340 may be executed.  The line operations that are executed may depend on the type of object being processed.  In figure 3, scanline table object line operations 341 are executed for scanline table objects.  Frame object line operations 342 are executed for frame objects, while other object line operations 343 are executed for other objects.
[0047]      In the embodiment displayed in figure 3, line operations 340 may be executed during the run-time stage in real-time.  Further, tasks associated with active planes 330, inactive planes 325, all planes 320, and orders 305 may be executed during the configuration stage prior to real-time execution.  By executing processing tasks associated with orders 305, planes 320, 325, and 330 during the configuration stage prior to real-time execution of the run-time stage, real-time processing by the microcontroller 201 can be improved.  
[0048]      While the embodiment of figure 3 displays various tasks (e.g., tasks 306, 307, 321, 322, 326, 331, 332, 341, 342, 343) associated with orders, planes, and lines, other tasks that are not displayed may also be associated with the orders, planes, or lines.  Additionally, in some embodiments, the tasks displayed in figure 3 may not need to be executed, or may be executed in a different order.  Additionally, different loop hierarchies are possible.  For example, a loop hierarchy may include tasks executed on a per object basis.
[0049]      Figure 4 illustrates an example block diagram displaying a two-stage process 400 executed by microcontroller 201 for printing device 200.  In the displayed embodiment, the two-stage process 400 includes a configuration stage 405 and a run-time stage 410.  By including a configuration stage 405 that is executed prior to real-time execution of the run-time stage 410, the real-time performance of the microcontroller 201 is improved.  In other embodiments, the two-stage process 400 may include more stages than the two stages displayed.  In particular, multiple stages may be executed prior to real-time execution of a run-time stage.  Other embodiments of two-stage process 400 are also possible.
[0050]      Configuration stage 405 includes several tasks that are executed prior to real-time execution of the application, which corresponds to run-time stage 410.  In the displayed embodiment, configuration stage 405 includes intermediate variables determination 415, state transition list configuration 420, and mask determination 425.  Additionally, the configuration stage 405 may include optional object configuration tasks, including scanline table configuration 430, trapezoid configuration 435, and reverse mapping configuration 440.  In some embodiments, the configuration stage 405 may include more, fewer, and/or different tasks than those displayed in figure 4.
[0051]      Intermediate variables are determined during task of intermediate variables determination 415 of the configuration stage 405 for a particular object.  Intermediate variables may include static parameters that are evaluated by the microcontroller prior to the run-time stage 410.  Intermediate variables that are evaluated during step of intermediate variables determination 415 may be used during other steps during configuration stage 405.  For example, steps such as state transition list configuration 420, mask determination 425, scanline table configuration 430, trapezoid configuration 435, and/or reverse mapping configuration 440, may rely on one or more intermediate variables evaluated during step of intermediate variable determination 415.  Intermediate variables may also be relied upon during run-time stage 410.  
[0052]      State transition list configuration 420 generates a linked list of predetermined states for a particular object.  The linked list may include a plurality of predetermined states that are executed during run-time stage 410 for a particular object.  The state transition linked list may be generated during configuration stage 405 by evaluating outer loops, outer loop tasks, outer loop conditionals, and/or other loops or loop parts.  For example, the list may be generated during configuration stage 405 by executing tasks that may be considered as tasks done per order 305, per plane 320, per inactive plane 325, or per active plane 330 (see figure 3).  
[0053]      For another example, figure 1B may display one or more conditionals 121-135 and one or more tasks 141-146 that may be pre-evaluated during configuration stage 405 to generate a predetermined state transition list.  As mentioned earlier, conditionals 121, 123, 124, 125, and 126 may be pre-evaluated as “no” while conditionals 122, 127 and 128 may be pre-evaluated as “yes” during configuration stage 405.  As a result, state 104 would follow state 103.  By pre-evaluating the conditionals for figure 1B, the predetermined state transition list may now include states 103 and 104, and information indicating that state 103 precedes state 104.  During the configuration stage 405, state 104 may then be pre-evaluated to pre-determine the state that should follow state 104.
[0054]      For another example, figure 1C displays a state transition diagram of a state machine 150 that implements a two-stage execution.  In particular, the state transition list for figure 1C may include the following states in the following order: state 101, state 102, state 103, state 104, state 105, state 106, state 107, state 108, state 109, and state 110.  As mentioned earlier for figure 1A, each state may represent a portion of software code stored in a memory of printing device 200 and/or the microcontroller 201.  In one embodiment, the state transition list is stored as a linked list.  However, in other embodiments, the state transition list may be stored in different ways.  Additionally, in other embodiments, more, fewer, and/or different states may be stored as part of the state transition list.  Additionally, the states may be stored in a different order than the order shown or described for figure 1C.
[0055]      Each predetermined state of a predetermined state transition linked list may have a predetermined action associated with it.  For example, execution of the predetermined state, such as state 103, by a microcontroller may require executing a predetermined action prior to transitioning to the next state, such as state 104.  Referring to figure 1B, the predetermined action for state 103 may be executing task 143 or task 144 prior to execution of state 104.  In some embodiments, state 103 may include other tasks (not displayed) as part of the predetermined action for state 103.  Alternatively, the state 103 may include multiple predetermined actions, in some embodiments.  Although not displayed in figure 1B, in some embodiments, a predetermined action for a particular state, such as one or more of the tasks 141-146 for state 103, may be executed without evaluating any conditionals for the state, such as conditionals 121-135 for state 103.  The predetermined action may be executed during run-time stage 410.  However, the predetermined action for a particular predetermined state may be determined during configuration stage 405. 
[0056]      In some embodiments, a predetermined action for a predetermined state may include one or more tasks.  The tasks may correspond to a microcontroller sending control outputs to one or more devices.  In some embodiments, the microcontroller determines that a first subset of one or more devices is ready before sending control outputs to a second subset of one or more devices.   While sending control outputs to one or more devices may be the predetermined action of a predetermined state in one embodiment, in other embodiments, additional tasks may be executed in addition to sending control outputs as part of the predetermined action for a predetermined state.  Alternatively, a predetermined action for a predetermined state may be evaluating a conditional for the predetermined state.  For example, in some embodiments, a predetermined action may be evaluating a conditional, such as conditionals 121-135 in figure 2B, for a particular state, such as state 103 in figure 2B.  Other predetermined actions for a predetermined state are also possible.  
[0057]      A state transition list may allow hardware, such as a microcontroller, to determine the current predetermined state, one or more of the next predetermined states, and/or the final predetermined state of the state transition list for an object.  A microcontroller may execute one or more predetermined actions for a predetermined state in real-time during run-time stage 410 before proceeding to execute one or more predetermined actions for a next predetermined state.  In some embodiments, the microcontroller executes the corresponding predetermined actions for the predetermined states of the generated state transition list in real-time during run-time stage 410.  The microcontroller may rely on intermediate variables during configuration stage 405 to determine the state transition list.  The microcontroller may also rely on intermediate variables during the run-time stage 410 while executing the predetermined actions of the predetermined states of the state transition list.
[0058]      During run-time stage 410, a microcontroller may first determine the current predetermined state for an object based on the state transition list.  The microcontroller may then execute predetermined actions for the current predetermined state before proceeding to the next predetermined state.  Once the microcontroller has completed the predetermined actions for the predetermined state, the microcontroller may use the state transition list to determine the next predetermined state.  Once the next predetermined state is determined by the microcontroller, the microcontroller may set the next predetermined state as the current state, and execute the predetermined actions associated with the new current state before proceeding to another predetermined state.  The microcontroller may repeat this process until encountering the final predetermined state.  The microcontroller may execute the predetermined actions associated with the final predetermined state to complete processing of the object.  The microcontroller may then proceed to process the next object.  If all objects of an order have been processed, the microcontroller may proceed to process the next order.
[0059]      By generating a state transition list during configuration stage 405, the microcontroller can improve real-time performance for processing in order.  In particular, the microcontroller can use the state transition list to execute predetermined actions for predetermined states in real-time without spending time on determining future states based on unevaluated conditionals.  As a result, real-time performance of the microcontroller is improved due to the streamlined run-time stage.
[0060]      Mask determination 425 generates masks for each predetermined state in the state transition list.  In particular, mask determination 425 may generate a status mask and a control mask for each predetermined state.  In other embodiments, mask determination 425 may generate more, fewer, and/or different masks than the masks described.
[0061]      The status mask may be used to indicate for a particular state which devices to monitor for status.  Similarly, a control mask may be used to indicate for a particular state which devices to send control outputs to.  In one embodiment, the status mask may include one or more bits, with each bit corresponding to a particular device.  If the device should be monitored, the device status bit may equal 1, whereas if the device should not be monitored, then the device status bit may equal 0.  Similarly, a control mask may also include one or more bits, with each bit corresponding to a particular device.  If the device should receive a control output, then the corresponding device control bit may equal 1, whereas if the device should not receive a control output, then the corresponding device control bit may equal 0.  
[0062]      While the described embodiment uses binary values for device status and device control, in other embodiments, the device status and/or device control may have more than two possible values.  For example, the device status could have values of “busy”, “ready”, and “error.”  Device control may have values of “off”, “low”, and “high.”  Other values for device status and control are also possible.  Additionally, in other embodiments, the status mask and/or control mask may be implemented in a different manner.  For example, the “AND” operation and/or “XOR” operation (see figure 5) may not be used with the status mask and/or control mask if the masks use values that are not binary.
[0063]      During the run-time stage 410, the status mask may be used to determine which devices should be monitored for status.  In particular, the status mask can undergo an “AND” operation with the device status input vector to generate an output vector containing bits representing the devices to monitor.  The device status input vector may contain one or more bits, with each bit representing a possible device to monitor for status.  The number of bits for the device status input vector may be the same as the number of bits for the status mask.  Further, the bits of the status mask may correspond to the same devices as the devices represented by the bits of the device status input vector.  
[0064]      By using an “AND” operation with the status mask and the device status input vector, a status mask can prevent devices from being monitored by having an entry of 0 for the corresponding device status bits of the devices.  Otherwise, if the status mask bit corresponding to a device has an entry of 1, and the device status input vector bit corresponding to the same device also has an entry of 1, then the “AND” operation may produce a vector with an entry of 1 for that particular device.  The output vector’s 1 may indicate that the particular device should be monitored for status.  However, other embodiments of implementing a status mask to determine devices for monitoring are also possible.
[0065]      During the run-time stage 410, the control mask may be used to determine which devices should receive control outputs.  In particular, the control mask may undergo an “AND” operation with a device control input vector to generate a device control output vector containing bits representing the devices to control.  The device control input vector may contain one or more bits, with each bit representing a possible device to control.  The number of bits in the device control input vector may be the same as the number of bits in the control mask.  The bits of the control mask may correspond to the same devices as the devices represented by the control bits of the device control input vector.
[0066]      By using an “AND” operation with the control mask and the device control input vector, a control mask may prevent devices from being controlled by having an entry of 0 for the corresponding control bits of the devices.  Otherwise, if the corresponding bit of the device in the control mask and device control input vector have an entry of 1, then the “AND” operation may produce a device control output vector with an entry of 1 for that particular device.  The device control output vector’s 1 may indicate that the particular device should be controlled.  However, other embodiments of implementing a control mask to control devices are also possible.
[0067]      The status mask and control mask may be determined during configuration stage 405 while the microcontroller executes outer loop tasks and conditionals.  In particular, for each predetermined state of the state transition list, the microcontroller may determine, from a set of devices associated with a microcontroller, which devices need to be monitored for status and/or which devices need to be controlled.  For example, with reference to figure 1B, the microcontroller may determine for state 103 that conditional 122 requires monitoring of a particular device status.  As a result, the microcontroller, during configuration stage 405, may generate a status mask for state 103 including a value of 1 for the status mask bit corresponding to the particular device of conditional 122.  For another example, with reference to figure 1B, the microcontroller may determine for state 103 that the task 145 includes sending a control output to a selected device.  Thus, the microcontroller, during configuration stage 405, may generate a control mask for state 103 including a value of 1 for the control mask bit corresponding to the selected device.  In some embodiments, the evaluation of a state during the configuration stage may cause a status mask and/or a control mask to have more, fewer, and/or different devices designated to be monitored and/or controlled by setting the corresponding bit to equal 1.  In other embodiments, the control mask and status mask may be generated in a different manner.  The microcontroller may also use intermediate variables during mask determination 425 to determine one or more masks (e.g., the status mask, the control mask).
[0068]      By generating masks, such as the status mask and the control mask, for a particular state, the real-time execution of each state can be shortened, which improves the real-time execution performance of the microcontroller.  In particular, a single “AND” operation between associated devices and the status mask or control mask indicates which devices for the particular states need to be monitored for status or controlled.  As a result, the microcontroller can retrieve device status and send control outputs to devices in real-time for only the required devices.  Thus, the real-time execution of a microcontroller is more efficient.  Therefore, masks can improve the real-time performance of the microcontroller.
[0069]      During configuration stage 405, one or more object configuration tasks may also be executed by the microcontroller.  For example, the microcontroller may execute a scanline table configuration 430 for scanline table objects, a trapezoid configuration 435 for trapezoid objects, or a reverse mapping configuration 440 for reverse mapping objects.  Other objects, such as frames, may also be configured during the configuration stage 405.
[0070]      The tasks executed during run-time stage 410 for a particular state will depend on which object has been processed.  For example, if the object is a scanline table, then the run-time stage 410 will include execution of tasks for a scanline table object 445.  Alternatively, if the object is a frame object, then the run-time stage 410 will execute tasks for a frame object 450.  Alternatively, during run-time stage 410, tasks may be executed for other objects 455, such as trapezoids.  The tasks may include executing the one or more predetermined states of the list determined during state transition list configuration 420, applying the status masks or control masks determined during mask determination 425 for each predetermined state, and/or other tasks.  The run-time stage 410 may be executed by the microcontroller in real-time.  In other embodiments, different tasks may be executed during run-time stage 410.
4.         Device Status Determination
[0071]      Figure 5 illustrates an example block diagram for determining the device status of one or more devices.  The device status may be determined during real-time execution of the run-time stage 410.  In figure 5, the displayed embodiment includes a device status input vector 505, a polarity 510, a status mask 515, an “XOR” operation 520, an “AND” operation 525, and a device status output vector 530.  In other embodiments, the block diagram may include more, fewer, and/or different components than those displayed in figure 5.
[0072]      Polarity 510 may indicate one or more devices that may have their status bit inverted.  Polarity 510 may include one or more bits.  Each bit may correspond to a device.  In the displayed embodiment of figure 5, polarity 510 contains as many bits as device status input vector 505.  Further, the bits of polarity 510 correspond to the same devices as the bits of device status input vector 505.  Thus, polarity 510 may indicate whether any of the devices of device status input vector 505 should have their status bit inverted.  For example, for polarity 510, a bit for a corresponding device can be set to 1 to indicate that the device status bit should be inverted (e.g., from 0 to 1 or from 1 to 0) for the same corresponding device of device status input vector 505.  Because polarity 510 indicates when a device status bit should be inverted, the polarity is applied to the device status input vector 505 by using an “XOR” operation 520.  
[0073]      There are various reasons why a status bit may be inverted.  For example, in one application, a microcontroller may execute a predetermined action after determining that one or more device status inputs indicate that one or more devices are “ready.”  The microcontroller may rely on an “AND” operation to determine that the one or more devices are “ready.”  As a result, each device status input may have a device status bit of 1 to indicate that the device is “ready.”  
[0074]      However, some devices may have a device status that indicates whether or not the device is “busy.”  For example, a device may have a device status bit of 1 to indicate that the device is “busy,” and a device status bit of 0 to indicate that the device is idle or “ready.”  Thus, the microcontroller may invert the device status bit so that a device status bit of 1 corresponds to the device being idle or “ready,” and the device status bit equaling 0 corresponds to the device being “busy” or unavailable.  In this case, polarity 510 can indicate which devices have device status bits that can be inverted.
[0075]      In figure 5, the microcontroller may invert one or more bits of device status input vector 505 based on polarity 510 by applying the “XOR” operation 520 on both device status input vector 505 and polarity 510.  After executing the “XOR” operation 520, the microcontroller may then apply an “AND” operation 525 to the status mask 515 and the result of the “XOR“ operation 520 to determine the device status output vector 530.  The device status output vector 530 indicates which device status values may need to be monitored.  The device status output vector 530 also modifies device status bit orientation such that a device status bit of 1 indicates that a device is “ready.”  The “XOR” operation 520 and “AND” operation 525 may be executed by software (e.g., run-time stage 410 code) or hardware (e.g., microcontroller hardware, computing device hardware, logic gates, and/or other hardware).
[0076]      Thus, during run-time stage 410, the microcontroller may load a device status input vector 505, a polarity 510, and a status mask 515 for a particular state, apply the “XOR” operation 520 on the device status input vector 505 and the polarity 510, and apply the “AND” operation 525 on the status mask 515 and the result of the “XOR” operation 520 to generate the device status output vector 530.  The microcontroller then retrieves the device status based on device status output vector 530.  The microcontroller also inverts the retrieved device status bits as needed based on device status output vector 530.  The microcontroller may then use the one or more retrieved device status values to execute the predetermined action of the predetermined state.  Once the predetermined action is executed, the microcontroller may then proceed to the next state.  In other embodiments, the device status, status masks, and/or polarity may be implemented or used in a manner different than what is shown in figure 5.
5.         Example Methods
[0077]      Figure 6A is a flow chart illustrating an example method 600 executed by a microcontroller, such as microcontroller 201.  The method 600 begins with executing a first stage for processing data of an object for an order including one or more objects to render a two-dimensional image, wherein each object includes image data for the two-dimensional image, as shown by block 605.  For example, with reference to figure 4, the first stage executed during method 600 may correspond to the configuration stage 405.  The objects of the order that are processed may be a scanline table, a frame, trapezoid, or some other object.  The method 600 progresses to then execute a second stage for processing data of the object, as shown by block 610.  With reference to figure 4, for example, the second stage executed during method 600 may correspond to the run-time stage 410.  During the run-time stage 410, the method 600 may execute processing for a scanline table object 445, a frame object 450, or some other object 455 (including a trapezoid).
[0078]      Although figure 6A displays several steps for method 600, in some embodiments, method 600 may include more, fewer, and/or different steps than those displayed in figure 6A.  For example, method 600 may include more than two stages for processing objects with image data for an order for rendering a two-dimensional image.  The method 600 may include stages that are different from the first stage 605 corresponding to the configuration stage 405 of figure 4 and the second stage 610 corresponding to the run-time stage 410 of figure 4.  In some embodiments, the method 600 is executed by microcontroller 201 of a computing device, such as printing device 200.  However, other computing devices may include a microcontroller for executing method 600.  Additionally, hardware other than a microcontroller 201 may execute the method 600.
[0079]      Figure 6B is a flow chart illustrating an example method 611 for executing the first stage 605 of method 600 from figure 6A.  Example method 611 may be executed by microcontroller 201 for a printing device 200, as shown in figure 2.  With reference to figure 4, the method 611 may correspond to configuration stage 405.  The method 611 may be executed as part of method 600 for processing the image data of an object for an order for rendering a two-dimensional image.  
[0080]      Method 611 begins with determining a plurality of intermediate variables, as shown by block 615.  With reference to figure 4, for example, the microcontroller 201 may complete intermediate variable determination 415 during configuration stage 405.  Next, method 611 may then generate, for an object, a state transition list based on the plurality of intermediate variables, wherein the state transition list includes a plurality of predetermined states, wherein each predetermined state is associated with a predetermined action, as shown by block 620.  For example, with reference to figure 4, block 620 may correspond with state transition list configuration 420, which is executed during the configuration stage 405 by microcontroller 201.
[0081]      Method 611 continues by determining, for each predetermined state, from one or more devices associated with a processor, a first subset of devices to monitor for device status, as shown in block 625.  Method 611 progresses by determining, for each predetermined state, from the one or more devices associated with the processor, a second subset of devices to control, as shown in block 630.  With reference to figure 4, both the first and the second subsets of devices may be determined during mask determination 425 during the configuration stage 405.  The processor may correspond to the microcontroller 201.
[0082]      Although figure 6B displays several steps for method 611, in some embodiments method 611 may include more, fewer, and/or different steps than those displayed in figure 6B.  For example, method 611 could include steps for generating a status mask for the first subset of devices for each predetermined state and generating a control mask for the second subset of devices for each predetermined state.  With reference to figure 4, both the status mask and the control mask may be determined during mask determination 425 during the configuration stage 405.  Further, the steps in figure 6B may be performed in a different order than the order shown in figure 6B.  In some embodiments, the method 611 is executed by a microcontroller of a printing device (e.g., microcontroller 201 of printing device 200).  However, in other embodiments, a different computing device that includes a microcontroller, or a processor, may execute the method 611.  Additionally, hardware other than a microcontroller may execute method 611.
[0083]      Figure 6C is a flow chart illustrating an example method 641 for executing a second stage 610 of method 600 from figure 6A.  Example method 641 may be executed by microcontroller 201 for a printing device 200, as shown in figure 2.  With reference to figure 4, the method 641 may correspond to run-time stage 410.  The method 641 may be executed as part of method 600 for processing image data of an object for an order for rendering a two-dimensional image.
[0084]        Method 641 begins by determining a current predetermined state based on a state transition list, as shown by block 650.  Next, method 641 continues by determining the device status for the first subset of devices for the current predetermined state, as shown by block 655.  The method 641 progresses by sending outputs to the second subset of devices for the current predetermined state, as shown by block 660.  The method 641 may then proceed to execute the predetermined action for the current predetermined state based on the state transition list and the device status for the first subset of devices for the current predetermined state, as shown by block 665.  With reference to figure 4, block 650, 655, 660, and 665 of method 641 may be executed during run-time stage 410.
[0085]      The method 641 may then determine a next predetermined state based on the state transition list, as shown by block 670.  Next, the method 641 may proceed to the next predetermined state after completing execution of the predetermined action of the current predetermined state, as shown by block 675.  Similar to blocks 650, 655, 660, and 665, blocks 670 and 675 may also be executed during run-time stage 410, as shown in figure 4.
[0086]      Although figure 6C displays several steps for method 641, in some embodiments, method 641 may include more, fewer, and/or different steps than those displayed in figure 6C.  For example, method 641 may include steps to further determine the device status for the first subset of devices for the current predetermined state based on the status mask for the current predetermined state.  Additionally, method 641 may include steps to send outputs to the second subset of devices for the current predetermined state based on the control mask for the current predetermined state.  With reference to figure 4, these additional steps may be executed during run-time stage 410.
[0087]      Further, the steps in figure 6C may be performed in a different order than the order shown in figure 6C.  In some embodiments, the method 641 is executed by a microcontroller of a printing device, such as microcontroller 201 of printing device 200.  However, in other embodiments, a different computing device that includes a microcontroller, or a processor, may execute method 641.  Additionally, hardware other than a microcontroller may execute method 641.
6.         Conclusion
[0088]      The present disclosure is not to be limited in terms of the particular embodiments described in this application, which are intended as illustrations of various aspects. Many modifications and variations can be made without departing from its spirit and scope, as will be apparent to those skilled in the art. Functionally equivalent methods and apparatuses within the scope of the disclosure, in addition to those enumerated herein, will be apparent from the foregoing descriptions. Such modifications and variations are intended to fall within the scope of the appended claims.
[0089]      With respect to any or all of the ladder diagrams, scenarios, and flow charts in the figures and as discussed herein, each block and/or communication may represent a processing of information and/or a transmission of information in accordance with example embodiments. Alternative embodiments may be included within the scope of such example embodiments. Further, more or fewer blocks and/or functions may be used with any of the ladder diagrams, scenarios, and flow charts discussed herein, and these ladder diagrams, scenarios, and flow charts may be combined with one another, in part or in whole. 
[0090]      A step or block that represents a processing of information may correspond to circuitry that can be configured to perform the specific logical functions of a herein-described method or technique. Alternatively or additionally, a step or block that represents a processing of information may correspond to a module, a segment, or a portion of program code (including related data). The program code may include one or more instructions executable by a processor for implementing specific logical functions or actions in the method or technique. The program code and/or related data may be stored on any type of computer-readable medium, such as a storage device, including a disk drive, a hard drive, or other storage media.
[0091]      The computer-readable medium may also include non-transitory computer-readable media such as computer-readable media that stores data for short periods of time like register memory, processor cache, and/or random access memory (RAM). The computer-readable media may also include non-transitory computer-readable media that stores program code and/or data for longer periods of time, such as secondary or persistent long term storage, like read only memory (ROM), optical or magnetic disks, and/or compact-disc read only memory (CD-ROM), for example. The computer-readable media may also be any other volatile or non-volatile storage systems. A computer-readable medium may be considered a computer-readable storage medium, for example, and/or a tangible storage device.
[0092]      Additionally, any enumeration of elements, blocks, or steps in this specification, the drawings, or the claims is for purposes of clarity. Thus, such enumeration should not be interpreted to require or imply that these elements, blocks, or steps adhere to a particular arrangement or are carried out in a particular order.
[0093]      It should be understood that arrangements described herein are for purposes of example only. As such, those skilled in the art will appreciate that other arrangements and other elements (e.g., machines, interfaces, functions, orders, groupings of functions, etc.) can be used instead, and some elements may be omitted altogether according to the desired results. Further, many of the elements that are described are functional entities that may be implemented as discrete or distributed components or in conjunction with other components, in any suitable combination and location.
[0094]      While various aspects and embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for purposes of illustration and are not intended to be limiting with the true scope and spirit being indicated by the following claims.
REFFERENCE SIGNS LIST
[0095]        
200    Printing Device
201    Microcontroller
202    Processor
204    Memory
206    Input / Output Unit
208    Microcontroller System Bus
What is claimed is:
1.  A computing device comprising:
one or more processors;
a memory storing executable instructions, wherein executing the instructions causes the one or more processors to execute a method comprising:
executing, by the one or more processors, a first stage for processing data of an object for an order including one or more objects to render a two-dimensional image, wherein each object includes image data for the two-dimensional image, wherein the first stage comprises:
determining a plurality of intermediate variables;
generating, for the object, a state transition list based on the plurality of intermediate variables, wherein the state transition list includes a plurality of predetermined states, wherein each predetermined state is associated with a predetermined action;
determining, for each predetermined state, from one or more devices associated with the one or more processors, a first subset of devices to monitor for device status; and
determining, for each predetermined state, from the one or more devices associated with the one or more processors, a second subset of devices to control; 
executing, by the one or more processors, a second stage for processing data of the object, the second stage comprising:
determining a current predetermined state based on the state transition list;
determining the device status for the first subset of devices for the current predetermined state;
sending outputs to the second subset of devices for the current predetermined state; 
executing the predetermined action for the current predetermined state based on the state transition list and the device status for the first subset of devices for the current predetermined state;  
determining a next predetermined state based on the state transition list; and
proceeding to the next predetermined state after completing execution of the predetermined action of the current predetermined state.
2.  The computing device of claim 1, further comprising:
for the first stage, 
generating a status mask for the first subset of devices for each predetermined state; and
for the second stage,
further determining the device status for the first subset of devices for the current predetermined state based on the status mask for the current predetermined state. 
3.  The computing device of claim 2, further comprising:
for the first stage, 
receiving, by the one or more processors, a polarity for the first subset of devices for each predetermined state; and
for the second stage, 
further determining the device status for the first subset of devices for the current predetermined state based on the status mask and the received polarity for the current predetermined state.           
4.  The computing device of claim 2 or 3, further comprising:
for the first stage, 
generating a control mask for the second subset of devices for each predetermined state; and
for the second stage, 
sending outputs to the second subset of devices for the current predetermined state based on the control mask for the current predetermined state. 
5.  The computing device of any of claims 1 to 4, further comprising:
executing, by the one or more processors, the second stage, wherein the second stage further comprises:
determining a final predetermined state based on the state transition list; and
executing a predetermined action for the final predetermined state based on at least the state transition list, the status mask for the final predetermined state, and the device status for the first subset of devices for the final predetermined state; and
after completing execution of the first stage and second stage for processing data of the object for the order,
processing a second object of the order by,       
executing, by the one or more processors, the first stage for processing data of the second object for the order; and
executing, by the one or more processors, the second stage for processing data of the second object for the order.
6.  The computing device of claim 5, wherein the order is processed once each of the one or more objects has been processed.
7.  The computing device of any of claims 1 to 6, wherein each object includes a plurality of lines, wherein the predetermined action of the current predetermined state is for at least one line of the plurality of lines.  
8.  The computing device of any of claims 1 to 7, wherein the object is a trapezoid. 
9.  A method comprising:
executing, by a microcontroller, a first stage for processing data of an object for an order including one or more objects to render a two-dimensional image, wherein each object includes image data for the two-dimensional image, wherein the first stage comprises:
determining a plurality of intermediate variables;
generating, for the object, a state transition list based on the plurality of intermediate variables, wherein the state transition list includes a plurality of predetermined states, wherein each predetermined state is associated with a predetermined action;
determining, for each predetermined state, from one or more devices associated with the microcontroller, a first subset of devices to monitor for device status; and
determining, for each predetermined state, from the one or more devices associated with the microcontroller, a second subset of devices to control; 
executing, by the microcontroller, a second stage for processing data of the object, the second stage comprising:
determining a current predetermined state based on the state transition list;
determining the device status for the first subset of devices for the current predetermined state;
sending outputs to the second subset of devices for the current predetermined state; 
executing the predetermined action for the current predetermined state based on the state transition list and the device status for the first subset of devices for the current predetermined state;  
determining a next predetermined state based on the state transition list; and
proceeding to the next predetermined state after completing execution of the predetermined action of the current predetermined state.
10.  A program causing one or more processors of a microcontroller to execute a method comprising:
executing, by one or more processors of a microcontroller, a first stage for processing data of an object for an order including one or more objects to render a two-dimensional image, wherein each object includes image data for the two-dimensional image, wherein the first stage comprises:
determining a plurality of intermediate variables;
generating, for the object, a state transition list based on the plurality of intermediate variables, wherein the state transition list includes a plurality of predetermined states, wherein each predetermined state is associated with a predetermined action;
determining, for each predetermined state, from one or more devices associated with the one or more processors, a first subset of devices to monitor for device status; and
determining, for each predetermined state, from the one or more devices associated with the one or more processors, a second subset of devices to control; 
executing, by the one or more processors, a second stage for processing data of the object, the second stage comprising:
determining a current predetermined state based on the state transition list;
determining the device status for the first subset of devices for the current predetermined state;
sending outputs to the second subset of devices for the current predetermined state; 
executing the predetermined action for the current predetermined state based on the state transition list and the device status for the first subset of devices for the current predetermined state;  
determining a next predetermined state based on the state transition list; and
proceeding to the next predetermined state after completing execution of the predetermined action of the current predetermined state.
1. Abstract
PROBLEM TO BE SOLVED
To provide a technique for enhancing performance of a microcontroller in real-time.
2. SOLUTION
A system and method for implementing a real-time state machine with a microcontroller is disclosed.  The method includes using a two-stage process, including a configuration stage and a run-time stage, for processing objects for a printing device.  The configuration stage is executed prior to the run-time stage, which operates in real-time.  During the configuration stage, the system predetermines a state transition list, devices that need to be monitored, devices that need to be controlled, and other variables used during the run-time stage.  Once the configuration stage is complete, the system executes the run-time stage in real-time to complete processing of an object for a printing device.  By pre-calculating items during the configuration stage, the system reduces the execution time of the run-time stage in real-time.  As a result, the performance of the microcontroller in real-time is enhanced.
3. Representative Drawing: Fig. 1A
2016189188.tif 000013
2016189188.tif 000014
2016189188.tif 000015
2016189188.tif 000016
2016189188.tif 000017
2016189188.tif 000018
2016189188.tif 000019
2016189188.tif 000020
2016189188.tif 000021
2016189188.tif 000022