(57)【要約】【課題】ＳＤＲＡＭへのアクセスを効率的に行う。【解決手段】ＳＤＲＡＭコントローラ５０は、メモリ領域が複数のバンクに区分されたローカルＳＤＲＡＭ１００に対して、同一バンクに連続したアクセス要求があった場合には、その処理を後回しにして、優先順位の最も高い他の処理のアクセス要求を先に処理する。これにより、ローカルＳＤＲＡＭ１００をアクセスする必要のある処理の全体的な速度を向上させ、アクセスを効率的に行う。【選択図】  図１
2004318476.tif 000002
【特許請求の範囲】
【請求項１】
メモリ領域が複数のバンクに区分され、ある１つのバンクにアクセスした場合には、そのアクセス動作に要する期間である動作期間を経過した後でも、所定の時間だけ、そのバンクに再びアクセスするのが禁止される禁止期間を有するメモリに対するアクセスをコントロールするメモリコントローラであって、
複数の処理から前記メモリに対するアクセス要求を受け付ける、アクセス要求受付手段と、
前記アクセス要求受付手段で受け付けたアクセス要求の中から、最も優先順位の高いものを選択する、第１選択手段と、
前記第１選択手段で選択されたアクセス要求によりアクセスしようとしているバンクを特定し、そのバンクが禁止期間であるか否かを判断する、禁止期間判断手段と、
前記禁止期間判断手段で、アクセスしようとしているバンクが禁止期間でないと判断した場合には、第１選択手段で選択されたアクセス要求に基づいてメモリをアクセスする、第１アクセス手段と、
前記禁止期間判断手段で、アクセスしようとしているバンクが禁止期間であると判断した場合には、前記アクセス要求受付手段で受け付けた他のアクセス要求の中から、最も優先順位の高いものを選択する、第２選択手段と、
前記禁止期間判断手段で、アクセスしようとしているバンクが禁止期間であると判断した場合には、第２選択手段で選択されたアクセス要求に基づいてメモリをアクセスする、第２アクセス手段と、
を備えることを特徴とするメモリコントローラ。
【請求項２】
アクセス要求を当該メモリコントローラに送信する各処理の優先順位を固定的に保持する、第１優先順位テーブルをさらに備えることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記第１選択手段は、前記第１優先順位テーブルを参照して、前記アクセス要求受付手段で受け付けたアクセス要求の中から、最も優先順位の高いものを選択することを特徴とする請求項２に記載のメモリコントローラ。
【請求項４】
アクセス要求を当該メモリコントローラに送信する各処理の優先順位を動的に保持する、第２優先順位テーブルをさらに備えることを特徴とする請求項１乃至請求項３のいずれかに記載のメモリコントローラ。
【請求項５】
前記メモリにアクセスした場合に、動作期間と禁止期間とを合わせた期間だけ、前記第２優先順位テーブルにおけるそのアクセス要求を送信した処理の優先順位を最下位に移動する、第２優先順位テーブル変更手段をさらに備えることを特徴とする請求項４に記載のメモリコントローラ。
【請求項６】
前記第２優先順位テーブル変更手段は、前記メモリへのアクセスをした場合であっても、特定の処理については、前記第２優先順位テーブルにおける優先順位を移動しない、ことを特徴とする請求項５に記載のメモリコントローラ。
【請求項７】
前記第２選択手段は、前記第２優先順位テーブルを参照して、前記アクセス要求受付手段で受け付けたアクセス要求の中から、最も優先順位の高いものを選択することを特徴とする請求項４乃至請求項６のいずれかに記載のメモリコントローラ。
【請求項８】
メモリ領域が複数のバンクに区分され、ある１つのバンクにアクセスした場合には、そのアクセス動作に要する期間である動作期間を経過した後でも、所定の時間だけ、そのバンクに再びアクセスするのが禁止される禁止期間を有するメモリと、
前記メモリに対するアクセスをコントロールするメモリコントローラとを有するプリンタであって、
前記メモリコントローラは、
複数の処理から前記メモリに対するアクセス要求を受け付ける、アクセス要求受付手段と、
前記アクセス要求受付手段で受け付けたアクセス要求の中から、最も優先順位の高いものを選択する、第１選択手段と、
前記第１選択手段で選択されたアクセス要求によりアクセスしようとしているバンクを特定し、そのバンクが禁止期間であるか否かを判断する、禁止期間判断手段と、
前記禁止期間判断手段で、アクセスしようとしているバンクが禁止期間でないと判断した場合には、第１選択手段で選択されたアクセス要求に基づいてメモリをアクセスする、第１アクセス手段と、
前記禁止期間判断手段で、アクセスしようとしているバンクが禁止期間であると判断した場合には、前記アクセス要求受付手段で受け付けた他のアクセス要求の中から、最も優先順位の高いものを選択する、第２選択手段と、
前記禁止期間判断手段で、アクセスしようとしているバンクが禁止期間であると判断した場合には、第２選択手段で選択されたアクセス要求に基づいてメモリをアクセスする、第２アクセス手段と、
を備えることを特徴とするプリンタ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリコントローラ及びプリンタに関し、特に、メモリ領域が複数のバンクに区分され、ある１つのバンクにアクセスした場合には、そのアクセス動作に要する期間である動作期間を経過した後でも、所定の時間だけ、そのバンクに再びアクセスするのが禁止される禁止期間を有するメモリをコントロールするメモリコントローラ、及び、そのようなメモリを有するプリンタに関する。
【０００２】
【従来の技術】
プリンタに搭載されるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）の一種類として、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）がある。このＳＤＲＡＭが搭載されたプリンタにおいては、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＡＳＣＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  ＩＣ）が、メモリコントローラを介してＳＤＲＡＭにアクセスを行い、ＳＤＲＡＭからデータを読み出したり、ＳＤＲＡＭにデータを書き込んだりする。このようなＳＤＲＡＭを搭載したプリンタは、例えば、特許文献１にも開示されている。
【０００３】
【特許文献１】
特願２００２−２９０４０４号
【０００４】
【発明が解決しようとする課題】
しかしながら、ＳＤＲＡＭはメモリ領域が複数のバンクに分かれて構成されており、同一バンクに連続してアクセスするには、所定時間以上、間隔をあけなければならないという制約がある。例えば、図１１に示すように、バンク１に対するリードアクセス（動作期間）に３サイクル必要であり、同一バンクに対するアクセスが２サイクル禁止（禁止期間）されるＳＤＲＡＭを想定する。
【０００５】
この場合、バンク１に対してリードアクセスした後は、動作期間が経過した後でも、少なくとも２サイクル経過後でなければ、バンク１に再びアクセスすることができない。しかし、ＳＤＲＡＭにおいては、このバンク１以外の他のバンクには、動作期間さえ経過していれば、禁止期間経過後でなくともアクセスすることができる。例えば、バンク１にアクセスした後、バンク２にアクセスする場合には、バンク１へのアクセスが終了した直後にアクセスすることが可能である。
【０００６】
このような制約のため、これまでのプリンタにおいては、同一バンクに連続したアクセスがあった場合には、その禁止期間の経過を待って、再度、同一バンクにアクセスをしていた。このため、ＳＤＲＡＭを有効に活用しきれていないとともに、処理時間がその分長くなっているという問題があった。
【０００７】
そこで本発明は、前記課題に鑑みてなされたものであり、同一バンクにアクセスする際に禁止期間のあるメモリを有効に活用し、処理時間の短縮を図れるメモリコントローラを提供することを目的とする。
【０００８】
【課題を解決するための手段】
上記課題を解決するため、本発明に係るメモリコントローラは、メモリ領域が複数のバンクに区分され、ある１つのバンクにアクセスした場合には、そのアクセス動作に要する期間である動作期間を経過した後でも、所定の時間だけ、そのバンクに再びアクセスするのが禁止される禁止期間を有するメモリに対するアクセスをコントロールするメモリコントローラであって、複数の処理から前記メモリに対するアクセス要求を受け付ける、アクセス要求受付手段と、前記アクセス要求受付手段で受け付けたアクセス要求の中から、最も優先順位の高いものを選択する、第１選択手段と、前記第１選択手段で選択されたアクセス要求によりアクセスしようとしているバンクを特定し、そのバンクが禁止期間であるか否かを判断する、禁止期間判断手段と、前記禁止期間判断手段で、アクセスしようとしているバンクが禁止期間でないと判断した場合には、第１選択手段で選択されたアクセス要求に基づいてメモリをアクセスする、第１アクセス手段と、前記禁止期間判断手段で、アクセスしようとしているバンクが禁止期間であると判断した場合には、前記アクセス要求受付手段で受け付けた他のアクセス要求の中から、最も優先順位の高いものを選択する、第２選択手段と、前記禁止期間判断手段で、アクセスしようとしているバンクが禁止期間であると判断した場合には、第２選択手段で選択されたアクセス要求に基づいてメモリをアクセスする、第２アクセス手段と、を備えることを特徴とする。
【０００９】
この場合、アクセス要求を当該メモリコントローラに送信する各処理の優先順位を固定的に保持する、第１優先順位テーブルをさらに備えるようにしてもよい。
【００１０】
さらに、前記第１選択手段は、前記第１優先順位テーブルを参照して、前記アクセス要求受付手段で受け付けたアクセス要求の中から、最も優先順位の高いものを選択することをようにしてもよい。
【００１１】
また、アクセス要求を当該メモリコントローラに送信する各処理の優先順位を動的に保持する、第２優先順位テーブルをさらに備えるようにしてもよい。
【００１２】
この場合、前記メモリにアクセスした場合に、動作期間と禁止期間とを合わせた期間だけ、前記第２優先順位テーブルにおけるそのアクセス要求を送信した処理の優先順位を最下位に移動する、第２優先順位テーブル変更手段をさらに備えるようにしてもよい。
【００１３】
さらに、前記第２優先順位テーブル変更手段は、前記メモリへのアクセスをした場合であっても、特定の処理については、前記第２優先順位テーブルにおける優先順位を移動しないようにしてもよい。
【００１４】
また、前記第２選択手段は、前記第２優先順位テーブルを参照して、前記アクセス要求受付手段で受け付けたアクセス要求の中から、最も優先順位の高いものを選択するようにしてもよい。
【００１５】
本発明に係るプリンタは、メモリ領域が複数のバンクに区分され、ある１つのバンクにアクセスした場合には、そのアクセス動作に要する期間である動作期間を経過した後でも、所定の時間だけ、そのバンクに再びアクセスするのが禁止される禁止期間を有するメモリと、前記メモリに対するアクセスをコントロールするメモリコントローラとを有するプリンタであって、前記メモリコントローラは、複数の処理から前記メモリに対するアクセス要求を受け付ける、アクセス要求受付手段と、前記アクセス要求受付手段で受け付けたアクセス要求の中から、最も優先順位の高いものを選択する、第１選択手段と、前記第１選択手段で選択されたアクセス要求によりアクセスしようとしているバンクを特定し、そのバンクが禁止期間であるか否かを判断する、禁止期間判断手段と、前記禁止期間判断手段で、アクセスしようとしているバンクが禁止期間でないと判断した場合には、第１選択手段で選択されたアクセス要求に基づいてメモリをアクセスする、第１アクセス手段と、前記禁止期間判断手段で、アクセスしようとしているバンクが禁止期間であると判断した場合には、前記アクセス要求受付手段で受け付けた他のアクセス要求の中から、最も優先順位の高いものを選択する、第２選択手段と、前記禁止期間判断手段で、アクセスしようとしているバンクが禁止期間であると判断した場合には、第２選択手段で選択されたアクセス要求に基づいてメモリをアクセスする、第２アクセス手段と、を備えることを特徴とする。
【００１６】
【発明の実施の形態】
本実施形態に係るプリンタは、メモリ領域が複数のバンクに区分されたローカルＳＤＲＡＭに対して、同一バンクに連続したアクセス要求があった場合には、その処理を後回しにして、優先順位の最も高い他の処理のアクセス要求を先に処理するようにしたものである。そして、これにより、ローカルＳＤＲＡＭをアクセスする必要のある処理の全体的な速度を向上させたものである。より詳しくを、以下に説明する。
【００１７】
図１は、本実施形態に係るプリンタの制御部の構造を説明するブロック図である。この図１に示すように、本実施形態に係るプリンタの制御部は、制御用ＬＳＩ１０により構成されている。
【００１８】
制御用ＬＳＩ１０は、システム・オン・チップと呼ばれ、１つのチップの中にＣＰＵとＡＳＩＣとその周辺回路が形成されている。本実施形態においては、制御用ＬＳＩ１０は、ＣＰＵ２０と、ＡＳＩＣ３０と、印刷エンジン４０と、ＳＤＲＡＭコントローラ５０と、スキャナコントローラ６０と、インターフェース７０、８０を備えて構成されている。
【００１９】
ＣＰＵ２０は、インターフェース７０を介して、ＳＤＲＡＭコントローラ５０に接続されており、このＳＤＲＡＭコントローラ５０を介して、この制御用ＬＳＩ１０の外部に設けられているローカルＳＤＲＡＭ１００にアクセスする。本実施形態においては、ＣＰＵ２０とインターフェース７０との間は、３２ビットバスで接続されており、インターフェース７０とＳＤＲＡＭコントローラ５０との間は、１２８ビットバスで接続されている。このため、インターフェース７０は、バス速度の違いを吸収して、ＣＰＵ２０とＳＤＲＡＭコントローラ５０とが適切に接続されるように制御する。
【００２０】
また、ＣＰＵ２０は、ＣＰＵ専用のＣＰＵ用ＳＤＲＡＭ１１０にも、接続されている。ＣＰＵ２０が、ローカルＳＤＲＡＭ１００にアクセスするか、それとも、ＣＰＵ用ＳＤＲＡＭ１１０にアクセスするかは、処理の内容により定まっている。
【００２１】
さらに、ＣＰＵ２０は、インターフェース７０、８０を介して、ＡＳＩＣ３０に接続されている。ＡＳＩＣ３０では、複数の処理が、ハードウェアを用いて実現されている。詳しくは後述するが、本実施形態においては、ＡＳＩＣ３０により、ＪＰＥＧ解凍処理と、リサイズ処理と、色変換処理と、並べ替え処理と、ヘッドコントロール処理などの処理が、実現されている。
【００２２】
ＡＳＩＣ３０は、印刷エンジン４０を介して、モータ駆動部１２０とヘッド駆動部１３０とを制御することにより、印刷の実行を管理する。また、ＡＳＩＣ３０は、ＳＤＲＡＭコントローラ５０に接続されており、このＳＤＲＡＭコントローラ５０を介して、ローカルＳＤＲＡＭ１００にアクセスする。
【００２３】
ＡＳＩＣ６０は、スキャナコントローラ６０にも接続されている。スキャナコントローラ６０は、スキャナ１４０の動作を制御する。すなわち、本実施形態に係るプリンタは、プリンタ機能とスキャナ機能とを有するマルチファンクションプリンタである。このスキャナコントローラ６０も、ＳＤＲＡＭコントローラ５０に接続されており、このＳＤＲＡＭコントローラ５０を介して、ローカルＳＤＲＡＭ１００にアクセスする。
【００２４】
図２は、このプリンタで印刷処理を行う場合のＡＳＩＣ３０とローカルＳＤＲＡＭ１００との間のデータの流れを説明する図である。この図２に示すように、本実施形態に係るＡＳＩＣ３０では、少なくとも、ＪＰＥＧ解凍処理Ｐ１と、リサイズ処理Ｐ２と、色変換処理Ｐ３と、並べ替え処理Ｐ４と、ヘッドコントロール処理Ｐ５とを、ハードウェア的に実現している。また、本実施形態においては、これらの各処理の起動と終了は、ＣＰＵ２０により管理されている。
【００２５】
図２に示すように、ＣＰＵ２０は、ハードディスクやメモリカードから、デジタルカメラ等で撮像した画像データを取り込んで、ローカルＳＤＲＡＭ１００に格納する。この図２の例では、画像データは、ＪＰＥＧ圧縮されており、ＪＰＥＧデータＤ１として格納される。
【００２６】
この状態で、ＣＰＵ２０がＪＰＥＧ解凍処理Ｐ１を起動すると、このＪＰＥＧ解凍処理Ｐ１は、ローカルＳＤＲＡＭ１００からＪＰＥＧデータＤ１を読み出して、解凍処理を行い、ＲＧＢデータを生成する。そして、ＪＰＥＧ解凍処理Ｐ１は、このＲＧＢデータＤ２をローカルＳＤＲＡＭ１００に格納する。
【００２７】
この状態で、ＣＰＵ２０がリサイズ処理Ｐ２を起動すると、このリサイズ処理Ｐ２は、ローカルＳＤＲＡＭ１００からＲＧＢデータＤ２を読み出して、リサイズ（サイズの調整）を行い、リサイズ後のＲＧＢデータＤ３を、ローカルＳＤＲＡＭ１００に格納する。
【００２８】
この状態で、ＣＰＵ２０が色変換処理Ｐ３を起動すると、この色変換処理Ｐ３は、リサイズ後のＲＧＢデータＤ３をローカルＳＤＲＡＭ１００から読み出して、色変換処理を行い、ＣＭＹＫ（シアン、マゼンタ、イエロー、ブラック）の印刷２値データＤ６に変換する。色変換処理Ｐ３では、この色変換の処理において、必要に応じて、ローカルＳＤＲＡＭ１００に格納されているルックアップテーブルＤ４を参照する。また、色変換処理Ｐ３は、色変換の処理をしている間に必要となるワークエリアを、色変換誤差バッファＤ５として、ローカルＳＤＲＡＭ１００に確保している。そして、色変換処理Ｐ３は、生成された印刷２値データＤ６を、ローカルＳＤＲＡＭ１００に格納する。
【００２９】
この状態で、ＣＰＵ２０が並べ替え処理Ｐ４を起動すると、この並べ替え処理Ｐ４は、印刷２値データＤ６をローカルＳＤＲＡＭ１００から読み出して、印刷ヘッドのインクノズルの並びに合わせてデータの順番の並べ替えを行い、ヘッドイメージデータＤ７を生成する。そして、並べ替え処理Ｐ４は、このヘッドイメージデータＤ７を、ローカルＳＤＲＡＭ１００に格納する。このヘッドイメージデータＤ７を格納する領域は、一般に、ヘッドイメージバッファと呼ばれている。
【００３０】
この状態で、ＣＰＵ２０がヘッドコントロール処理Ｐ５を起動すると、このヘッドコントロール処理Ｐ５は、ローカルＳＤＲＡＭ１００からヘッドイメージデータＤ７を読み出して、印刷ヘッドへ転送する。具体的には、印刷ヘッドに設けられているＲＡＭに、このヘッドイメージデータＤ７を転送する。印刷ヘッドは、このＲＡＭからヘッドイメージデータＤ７を読み出して、印刷を行うこととなる。
【００３１】
以上のような流れで、印刷が実行されるが、これらの各処理Ｐ１〜Ｐ５は、ＣＰＵ２０からの起動指令により並列に起動され、実行され得る。すなわち、１つの画像データを印刷する際には、その画像データが複数に分割されて、各処理Ｐ１〜Ｐ５が実行され、その際には、異なる処理がＡＳＩＣ３０内で並列に実行される。例えば、ＪＰＥＧ解凍処理Ｐ１が実行されている間に、色変換処理Ｐ３が並列に実行されるなどである。このため、ローカルＳＤＲＡＭ１００へのアクセスが各処理Ｐ１〜Ｐ５の間で競合する場合もあり得る。例えば、ＪＰＥＧ解凍処理Ｐ１がローカルＳＤＲＡＭ１００からＪＰＥＧデータＤ１を読み出している間に、色変換処理Ｐ３がＲＧＢデータＤ３を読み出そうとする場合もある。このような場合の調停も、ＳＤＲＡＭコントローラ５０が行う。
【００３２】
図３は、本実施形態に係るローカルＳＤＲＡＭ１００のバンク構成を示す図である。この図３に示すように、本実施形態に係るローカルＳＤＲＡＭ１００は、バンク１〜バンク４の４つのバンクで構成されている。上述したように、ローカルＳＤＲＡＭ１００においては、同一バンクに連続してアクセスする場合には、禁止期間経過後でなければならないという制約がある。本実施形態では、この制約を加味して、各処理Ｐ１〜Ｐ５のローカルＳＤＲＡＭ１００に対するアクセスの優先順位を決定する。
【００３３】
図４は、本実施形態に係る各処理Ｐ１〜Ｐ５の優先順位に関する優先順位テーブルＴＢ１０の一例を示す図である。この優先順位テーブルＴＢ１０は、禁止期間内に同一バンクへのアクセスがあった場合に、ＳＤＲＡＭコントローラ５０が参照するテーブルである。
【００３４】
この図４に示すように、本実施形態では、各処理Ｐ１〜Ｐ５のリードとライトは、別々に優先順位が定められている。これは、同じ処理でも、ＳＤＲＡＭ１００に対するリードとライトでは、優先順位が異なるためである。
【００３５】
本実施形態では、最も高い優先順位に、ヘッドコントロール処理Ｐ５のリードが割り当てられている。これは、ヘッドコントロール処理Ｐ５により印刷ヘッドを駆動した印刷が一旦開始されると、途中で印刷ヘッドを止めることができないため、ヘッドイメージデータＤ７は最優先で印刷ヘッドに転送する必要があるからである。このため、ヘッドコントロール処理Ｐ５のリードの優先順位は、最も高い優先順位に固定されている。
【００３６】
このヘッドコントロール処理Ｐ５のリードの次の優先順位に、ＪＰＥＧ解凍処理Ｐ１のリードが割り当てられており、次にリサイズ処理Ｐ２のリードが割り当てられており、次にＪＰＥＧ解凍処理Ｐ１のリードが割り当てられている。このように、各処理のリードとライトにそれぞれ優先順位が割り当てられている。
【００３７】
ヘッドコントロール処理Ｐ５のリード以外の処理は、１回、ＳＤＲＡＭ１００へのアクセスする権利が割り当てられると、割り当てられた処理と同じバンクの処理の優先順位が最下位に移動する。例えば、ＪＰＥＧ解凍処理Ｐ１のリード処理に、ＳＤＲＡＭ１００をアクセスする権利が与えられると、動作期間（３サイクル）に、禁止期間（２サイクル）を加えた５サイクルの期間だけ、同じバンクの処理の優先順位が最下位に移動する。そして、５サイクルの期間経過後に、元の優先順位の位置に戻る。
【００３８】
したがって、この５サイクルの間に、例えばＪＰＥＧ解凍処理Ｐ１が今アクセスしているバンクと同じバンクをアクセスしようとした場合には、ＪＰＥＧ解凍処理Ｐ１のアクセスの優先順位は最下位に移動しているため、ＳＤＲＡＭ１００へのアクセス要求がある処理の中で最も優先順位の高い処理に、ＳＤＲＡＭ１００へアクセスする権利が与えられることとなる。
【００３９】
図５は、本実施形態に係る各処理Ｐ１〜Ｐ５の優先順位に関する優先順位初期テーブルＴＢ２０の一例を示す図である。この優先順位初期テーブルＴＢ２０は、このプリンタに予め登録されている各処理Ｐ１〜Ｐ５の優先順位を固定的に保持しているテーブルである。したがって、この優先順位初期テーブルＴＢ２０は、このプリンタの電源がオフにされても保持される。この優先順位初期テーブルＴＢ２０は、ＳＤＲＡＭ１００への禁止期間内での同一バンクに対するアクセスではない場合に、参照されるテーブルである。
【００４０】
この図５に示すように、本実施形態に係る優先順位初期テーブルＴＢ２０では、最も高い優先順位に、ヘッドコントロール処理Ｐ５のリードが割り当てられており、次の優先順位に、ＪＰＥＧ解凍処理Ｐ１のリードが割り当てられており、次にリサイズ処理Ｐ２のリードが割り当てられており、次にＪＰＥＧ解凍処理Ｐ１のリードが割り当てられている。優先順位初期テーブルＴＢ２０においては、これらの優先順位は固定的なものであり変動しない。
【００４１】
これら図４に示した優先順位テーブルＴＢ１０と図５に示した優先順位初期テーブルＴＢ２０は、優先順位判定回路３２に形成され、保持されている。
【００４２】
図６は、本実施形態に係るＳＤＲＡＭコントローラ５０において、ローカルＳＤＲＡＭ１００へのアクセスと関連する回路部分を示すブロック図である。この図６に示すように、本実施形態に係るＳＤＲＡＭコントローラ５０は、少なくとも、優先順位判定回路３２とＳＤＲＡＭコマンド生成回路３４とを備えている。
【００４３】
優先順位判定回路３２には、ＣＰＵ２０及びＡＳＩＣ３０から、様々な処理のアクセス要求が入力される。すなわち、ＳＤＲＡＭ１００からデータを読み出す要求や、ＳＤＲＡＭ１００にデータを書き込む要求が、ＣＰＵ２０とＡＳＣＩ３０の双方から入力される。優先順位判定回路３２は、入力されたアクセス要求に応じて、ＳＤＲＡＭコマンド生成回路３４に、必要なコマンドを生成してローカルＳＤＲＡＭ１００に送信するように指示する。
【００４４】
また、複数の処理からローカルＳＤＲＡＭ１００へのアクセス要求を受け付けた場合は、優先順位判定回路３２は、優先順位テーブルＴＢ１０を参照して、その優先順位に従って、ＳＤＲＡＭ１００へのアクセス要求を実行する処理を選択する。さらに、選択した処理のアクセス要求が、禁止期間内にあるバンクへのアクセス要求である場合には、優先順位判定回路３２は、優先順位初期テーブルＴＢ２０を参照して、アクセス要求を実行する別の処理を選択する。
【００４５】
ＳＤＲＡＭコマンド生成回路３４は、優先順位判定回路３２からのコマンド生成要求に基づいて、コマンドを生成し、ローカルＳＤＲＡＭ１００に送信する。また、ＳＤＲＡＭコマンド生成回路３４からローカルＳＤＲＡＭ１００に送信される情報のうち、実行バンク情報とリード／ライト情報とは、優先順位判定回路３２にフィードバックされる。優先順位判定回路３２は、このフィードバックされた情報に基づいて、優先順位テーブルＴＢ１０における各処理の優先順位を動的に変更していく。
【００４６】
図７は、優先順位判定回路３２で実行される優先順位テーブル動的変更処理の内容を説明するフローチャートを示す図である。この優先順位テーブル動的変更処理は、ＳＤＲＡＭコマンド生成回路３４からローカルＳＤＲＡＭ１００にコマンドが送信された際に、起動され実行される処理である。この優先順位テーブル動的変更処理により、優先順位テーブルＴＢ１０の優先順位を動的に変更する。
【００４７】
この図７に示すように、本実施形態に係る優先順位テーブル動的変更処理では、まず、ＳＤＲＡＭコマンド生成回路３４から実行バンク情報を取得する（ステップＳ１０）。本実施形態においては、ＳＤＲＡＭコマンド生成回路３４からローカルＳＤＲＡＭ１００に送信するアドレスのうち、下位２ビットが、この実行バンク情報に相当している。すなわち、本実施形態においては、ローカルＳＤＲＡＭ１００は４つのバンクで構成されているので、アドレスの下位２ビットで１つのバンクを特定するのである。なお、アドレスの上位２ビットでなく、下位２ビットでバンクを特定することとしたのは、１つの処理で連続的にＳＤＲＡＭ１００をアクセスする場合には、連続したアドレスであることが多いが、その際には異なるバンクが順次アクセスされるようにして、禁止期間の経過を待つ必要が生じないようにするためである。
【００４８】
次に、優先順位テーブル動的変更処理は、ＳＤＲＡＭコマンド生成回路３４から、リード／ライト情報を取得する（ステップＳ１２）。次に、優先順位テーブル動的変更処理は、ローカルＳＤＲＡＭ１００へのアクセスが、ヘッドコントロール処理Ｐ５のリード処理によるものであるかどうかを判断する（ステップＳ１４）。ローカルＳＤＲＡＭ１００へのアクセスがヘッドコントロール処理Ｐ５のリード処理によるものであると判断した場合（ステップＳ１４：Ｙｅｓ）には、優先順位テーブルＴＢ１０の優先順位を変更することなく、この処理を終了する。
【００４９】
一方、ローカルＳＤＲＡＭ１００へのアクセスがヘッドコントロール処理Ｐ５のリード処理によるものでないと判断した場合（ステップＳ１４：Ｎｏ）には、ＳＤＲＡＭ１００へのアクセスを実行している処理の優先順位を、優先順位テーブルＴＢ１０の最下位に移動する（ステップＳ１６）。そして、優先順位テーブル動的変更処理は、優先順位を移動した処理の動作期間と禁止期間とが経過した後に、その優先順位を元の位置に戻す（ステップＳ１８）。例えば、動作期間が３サイクルで、禁止期間が２サイクルである場合には、５サイクル経過後に、優先順位を移動した処理を、元の優先順位に戻す。これにより、この処理を終了する。
【００５０】
図８乃至図１０は、優先順位判定回路３２で実行される優先順位判定処理の内容を説明するフローチャートを示す図である。この優先順位判定処理は、定常的に実行される処理である。この優先順位判定処理により、ＳＤＲＡＭ１００へのアクセスが実現される。
【００５１】
図８に示すように、優先順位判定処理では、まず、未処理のアクセス要求が存在するかどうかが判断される（ステップＳ３０）。すなわち、優先順位判定回路３２には、ＣＰＵ３０及びＡＳＩＣ３０の各種の処理から、ＳＤＲＡＭ１００へのアクセス要求（書き込み要求、読み出し要求）が入力される。このため、優先順位判定処理では、以下に述べる処理により優先順位にしたがって、ＳＤＲＡＭ１００へのアクセスを調停する。
【００５２】
すなわち、優先順位判定処理では、まず優先順位初期テーブルＴＢ２０を参照し、未処理のアクセス要求の中から、最も高い優先順位の処理を選択する（ステップＳ３２）。
【００５３】
次に、優先順位判定処理は、ステップＳ３２で選択した処理を実行すると、禁止期間内における同一バンクへのアクセスになるかどうかを判断する（ステップＳ３４）。具体的には、選択した処理のＳＤＲＡＭにアクセスするアドレスの下位２ビットで特定されるバンクが、禁止期間内にあるかどうかを判断する。
【００５４】
選択した処理のアクセスが禁止期間内における同一バンクへのアクセスである場合（ステップＳ３４：Ｙｅｓ）には、優先順位テーブルＴＢ１０を参照し、最も高い優先順位の他の処理を再度選択する（ステップＳ３６）。このステップＳ３６の後、又は、上述したステップ３４で禁止期間内における同一バンクへのアクセスでないと判断した場合（ステップＳ３４：Ｎｏ）には、最終的に選択された処理が書き込み処理であるか、読み出し処理であるかを判断する（ステップＳ３８）。
【００５５】
選択された処理が書き込み処理である場合（ステップＳ３８：Ｙｅｓ）には、図９に示すように、この選択された処理に対して、アクノーレッジ信号（ＡＣＫ信号）を返信する（ステップＳ５０）。
【００５６】
次に、優先順位判定処理は、選択された処理から送信されたＳＤＲＡＭ１００の書き込み用のアドレスと、書き込み用のデータとを取り込む（ステップＳ５２）。
【００５７】
次に、優先順位判定処理は、ウエイトカウンタＣＴＷ（Ｘ）が０であるかどうかを判断する（ステップＳ５４）。ここで、本実施形態に係る優先順位判定処理では、書き込み用のウエイトカウンタＣＴＷ（１）〜ＣＴＷ（４）と、読み出し用のウエイトカウンタＣＴＲ（１）〜ＣＴＲ（４）とが設けられている。また、変数Ｘは、アクセスするバンクを示している。
【００５８】
後述するように、ウエイトカウンタＣＴＷ（１）〜ＣＴＷ（４）は、それぞれ、バンク１〜バンク４に再び書き込みアクセスできるまでのサイクル数をカウントするための変数であり、ウエイトカウンタＣＴＲ（１）〜ＣＴＲ（４）は、それぞれ、バンク１〜バンク４に再び読み出しアクセスできるまでのサイクル数をカウントするための変数である。これらの変数は、１サイクル経過毎に１ずつ減少し、０になれば、該当するバンクは、書き込みアクセスや読み出しアクセスができる状態であることを示している。なお、書き込みアクセスと読み出しアクセスとを別々の変数にしているのは、再度アクセスできるまでの待ち時間が、次のアクセスが書き込みアクセスである場合と、次のアクセスが読み出しアクセスである場合とで、異なっているからである。
【００５９】
ウエイトカウンタＣＴＷ（Ｘ）が０でない場合（ステップＳ５４：Ｎｏ）には、１サイクルだけ待って（ステップＳ５６）、再びステップＳ５４の処理を繰り返す。一方、ウエイトカウンタＣＴＷ（Ｘ）が０である場合（ステップＳ５４：Ｙｅｓ）には、ＳＤＲＡＭコマンド生成回路３４に、書き込みをするアドレスと、書き込みするデータとを送信する（ステップＳ５８）。これにより、ＳＤＲＡＭコマンド生成回路３４は、ローカルＳＤＲＡＭ１００に対する書き込みコマンドを生成し、この書き込みコマンドと書き込みアドレスと書き込みデータとをＳＤＲＡＭ１００に送信する。この結果、ＳＤＲＡＭ１００に対する書き込みが実行される。
【００６０】
次に、優先順位判定処理は、ウエイトカウンタＣＴＷ（Ｘ）、ＣＴＲ（Ｘ）の設定を行う（ステップＳ６０）。例えば、バンク１に書き込みアクセスをした場合には、ウエイトカウンタＣＴＷ（１）を５に設定し、ウエイトカウンタＣＴＲ（１）を４に設定する。そして、上述したステップＳ３０の処理に戻る。
【００６１】
これに対して、上述した図８のステップＳ３８で、選択された処理が書き込み処理でないと判断された場合（ステップＳ３８：Ｎｏ）、つまり、選択された処理が読み出し処理である場合には、図１０に示すように、選択された処理に対して、リードアクノーレッジ信号（ＲＡＣＫ信号）を返信する（ステップＳ７０）。
【００６２】
次に、優先順位判定処理は、選択された処理から送信されたＳＤＲＡＭ１００の読み出し用のアドレスを取り込む（ステップＳ７２）。続いて、優先順位判定処理は、ウエイトカウンタＣＴＲ（Ｘ）が０であるかどうかを判断する（ステップＳ７４）。
【００６３】
ウエイトカウンタＣＴＲ（Ｘ）が０でない場合（ステップＳ７４：Ｎｏ）には、１サイクルだけ待って（ステップＳ７６）、再びステップＳ７４の処理を繰り返す。一方、ウエイトカウンタＣＴＲ（Ｘ）が０である場合（ステップＳ７４：Ｙｅｓ）には、ＳＤＲＡＭコマンド生成回路３４に、読み出しをするアドレスを送信する（ステップＳ７８）。これにより、ＳＤＲＡＭコマンド生成回路３４は、ローカルＳＤＲＡＭ１００に対する読み出しコマンドを生成し、この読み出しコマンドと読み出しアドレスとをＳＤＲＡＭ１００に送信する。この結果、ＳＤＲＡＭ１００に対する読み出しが実行される。
【００６４】
次に、優先順位判定処理は、ウエイトカウンタＣＴＷ（Ｘ）、ＣＴＲ（Ｘ）の設定を行う（ステップＳ８０）。例えば、バンク１に読み出しアクセスをした場合には、ウエイトカウンタＣＴＷ（１）を５に設定し、ウエイトカウンタＣＴＲ（１）を４に設定する。
【００６５】
ＳＤＲＡＭコマンド生成回路３４は、ＳＤＲＡＭ１００から読み出したデータを、ＳＤＲＡＭコマンド生成回路３４の所定の領域に格納するので、優先順位判定処理は、この格納されたデータを取り込んで、優先順位判定回路３２の所定の領域に格納する（ステップＳ８２）。
【００６６】
次に、優先順位判定処理は、この読み出し処理を要求した処理に対して、アクノーレッジ信号（ＡＣＫ信号）を返信する（ステップＳ８４）。このアクノーレッジ信号を受信したＣＰＵ２０又はＡＳＩＣ３０の処理は、優先順位判定回路３２に格納されているデータを取り込むことにより、ＳＤＲＡＭ１００からの読み出しが実現できたこととなる。このステップＳ８４の後、上述したステップＳ３０の処理に戻る。
【００６７】
以上のように、本実施形態に係るプリンタによれば、ＳＤＲＡＭ１００へのアクセスにあたり、アクセスの禁止期間内に同一バンクへのアクセス要求があった場合には、ＳＤＲＡＭ１００へのアクセスを要求している他の処理を優先してＳＤＲＡＭ１００へアクセスする権利を認めることとしたので、ＳＤＲＡＭ１００へのアクセスを効率的に制御することができる。このため、ＳＤＲＡＭ１００への全体的なアクセス時間を短くすることができる。
【００６８】
また、リアルタイム性が強く要求されるヘッドコントロール処理Ｐ５のリード処理に関しては、最優先にＳＤＲＡＭ１００へのアクセスを認めるようにしたので、ＳＤＲＡＭ１００へのアクセスの優先順位を動的に変更したとしても、プリンタの動作に何ら問題が生じないようにすることができる。
【００６９】
なお、本発明は上記実施形態に限定されず種々に変形可能である。例えば、本発明は、ＳＤＲＡＭ以外のメモリをコントロールするメモリコントローラにも適用することができる。すなわち、メモリ領域が複数のバンクに区分され、ある１つのバンクにアクセスした場合には、そのアクセス動作に要する期間である動作期間を経過した後でも、所定の時間だけ、そのバンクに再びアクセスするのが禁止される禁止期間を有するメモリに対するアクセスをコントロールするメモリコントローラであれば、本発明を適用することができる。
【００７０】
また、本発明の適用されたメモリコントローラは、プリンタ以外の他の機器にも同様に使用することができる。また、上述したハードウェアによる処理はソフトウェアによる処理に置き換えることが可能であり、上述したソフトウェアによる処理はハードウェアによる処理に置き換えることが可能である。
【００７１】
【発明の効果】
以上説明したように、本発明によれば、同一バンクにアクセスする際に禁止期間のあるメモリを有効に活用し、全体的な処理時間の短縮を図ることができる。
【図面の簡単な説明】
【図１】本実施形態に係るプリンタの制御部の構成を説明するブロック図である。
【図２】本実施形態に係るプリンタで印刷処理をする場合のデータの流れの代表例を示す図である。
【図３】本実施形態に係るローカルＳＤＲＡＭのバンク構成を示す図である。
【図４】本実施形態に係る優先順位テーブルの一例を示す図である。
【図５】本実施形態に係る優先順位初期テーブルの一例を示す図である。
【図６】本実施形態に係るＳＤＲＡＭコントローラにおいて、ローカルＳＤＲＡＭへのアクセスと関連する回路部分を示すブロック図である。
【図７】本実施形態に係る優先順位テーブル動的変更処理の内容を説明するフローチャートを示す図である。
【図８】本実施形態に係る優先順位判定処理の内容を説明するフローチャートを示す図である（その１）。
【図９】本実施形態に係る優先順位判定処理の内容を説明するフローチャートを示す図である（その２）。
【図１０】本実施形態に係る優先順位判定処理の内容を説明するフローチャートを示す図である（その３）。
【図１１】ＳＤＲＡＭにおける動作期間と禁止期間とを説明する図である。
【符号の説明】
１０  制御用ＬＳＩ
２０  ＣＰＵ
３０  ＡＳＩＣ
４０  印刷エンジン
５０  ＳＤＲＡＭコントローラ
６０  スキャナコントローラ
７０、８０  インターフェース
１００  ローカルＳＤＲＡＭ
１１０  ＣＰＵ用ＳＤＲＡＭ
１２０  モータ駆動部
１３０  ヘッド駆動部
１４０  スキャナ
【図１】
2004318476.tif 000003
【図２】
2004318476.tif 000004
【図３】
2004318476.tif 000005
【図４】
2004318476.tif 000006
【図５】
2004318476.tif 000007
【図６】
2004318476.tif 000008
【図７】
2004318476.tif 000009
【図８】
2004318476.tif 000010
【図９】
2004318476.tif 000011
【図１０】
2004318476.tif 000012
【図１１】
2004318476.tif 000013