JPH02116940A - 間接ポインタを用いたページ共有方式 - Google Patents

間接ポインタを用いたページ共有方式

Info

Publication number
JPH02116940A
JPH02116940A JP63271353A JP27135388A JPH02116940A JP H02116940 A JPH02116940 A JP H02116940A JP 63271353 A JP63271353 A JP 63271353A JP 27135388 A JP27135388 A JP 27135388A JP H02116940 A JPH02116940 A JP H02116940A
Authority
JP
Japan
Prior art keywords
page
entry
indirect pointer
indirect
shared
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP63271353A
Other languages
English (en)
Inventor
Koji Hayashi
耕司 林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP63271353A priority Critical patent/JPH02116940A/ja
Publication of JPH02116940A publication Critical patent/JPH02116940A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔目 次〕 概要 産業上の利用分野 従来の技術と発明が解決しようとする課題課題を解決す
るための手段 作用 実施例 発明の効果 〔(概要〕 論理アドレスから物理アドレスへのアドレス変換をサポ
ートする計算機システムにおいて、複数個のプロセスの
論理空間が1つの物理空間領域を共有する場合のアドレ
ス変換テーブルの構成法。
及び、その処理方式に関し、 複数個のプロセス間で共有している領域をペジ単位で、
且つ、プロセス毎に異なったアクセス保護属性を与えて
アクセスできること、及び、該共有を実現しているペー
ジテーブルのプロセス単位の開放時のオーバヘンドを無
くするページ共有方式を提供することを目的とし、 (11共有領域に含まれる物理ページを指し示す間接ポ
インタを設け、各プロセスのページテーブルの特定のエ
ントリが、各々上記間接ポインタを指し示すことで、複
数個のプロセスがページ単位での共有を行うように構成
する。(2)上記間接ポインタを用いたページ共有方式
において、該ページに固有な属性は上記間接ポインタに
、各プロセスに固有な属性(アクセス保護属性)は各プ
ロセスに対応したページテーブルの上記間接ポインタを
指し示すエントリに、それぞれ分割して保持するように
構成する。
〔産業上の利用分野〕
本発明は、論理アドレスから物理アドレスへのアドレス
変換をサポートする計算機システムにおいて、複数個の
プロセスの論理空間が1つの物理空間領域を共有する場
合のアドレス変換テーブルの構成法、及び、その処理方
式に関する。
複数個のプロセス間に共有メモリを設定し、該共有メモ
リを介して通信を行いながらデータ処理を進めていく手
法は、マルチプロセッサシステムにおいて有効である。
特に、近年、10〜30台程度の複数個のマイクロプロ
セッサ、及びメモリをバス結合したシステムが、コスト
パフォーマンスの高さから注目されている。
このようなシステムにおいて、有効な並列処理を行う為
には、各プロセッサ上で実行されるプロセス間において
、データ処理の最小の実行単位であるページ単位でのメ
モリ共有の実現が必須条件であり、且つ、各プロセスに
固有な属性、例えば、アクセス保護属性はプロセス毎に
与え、ページに固有な属性はページに与えることで、柔
軟なメモリアクセスができるメモリ共有方式の実現が必
要とされる。
〔従来の技術と発明が解決しようとする課題〕第2図は
従来の共有メモリ方式を説明する図であり、(a)は共
有領域のページテーブルを持っている場合を示し、(b
)は特定のプロセスのページテーブルの特定のエントリ
が共有ページをポイントし、該エントリを他のプロセス
のページチーフルからポイントしている場合を示してい
る。
−1に、論理アドレスから物理アドレスへの変換機構は
以下のようなものである。
アドレス変換テーブル6a、7a+及び、8a、9aは
、論理アドレスと、それに対応する物理アドレスを保持
しており、それらのアドレス変換テーブルの内、最下位
のテーブルで、個々のエントリがページの物理アドレス
を保持しているものを、一般に、ページテーブル8a、
9aと呼んでいる。
アドレス変換機構は、変換テーブル起点レジスタ4がポ
イントする各プロセス毎に異なった最上位の変換テーブ
ル6a、7aを起点として、与えられた論理アドレスを
適時オフセントとして用いて、該アドレス変換テーブル
6a+7a+ 及び、8a、9aを参照してゆく。
そして、ページテーブル8a 、 9aに辿りつくと、
該ページの物理アドレスや、該ページが主記憶上にある
かどうか、該ページが参照/変更されたかどうか等の情
報を得る。
又、アドレス変換テーブルの各エントリには、該アクセ
スに対する保護属性値等が保持されていて、アドレス変
換機構はこの属性値を参照することで、これに違反する
特定のアクセス(例えば、書き込みアクセスとか、実行
アクセス)を検出して、プログラムに割込みを発生する
手段を持つ。
このようなアドレス変換方式において、従来のプロセス
間での領域の共有は、以下の何れがの方式で実現してい
た。
(a)共有領域のページテーブルを持つ方式:この方式
は、第2図(a)に示したように、アドレス変換の為の
変換テーブルをページテーブル8a+9aよりも上位に
多段(本図では、1段)設けて、共有する領域(斜線で
示す) 20aについては、上位の変換テーブル6a、
7aのエントリ31〜32が、該共有領域20aに対す
るページテーブル33の特定のエン1す33aを指すよ
うにする方式である。
この方式の場合、共有の単位が共有しているペジテーブ
ル33で変換される領域の大きさとなり、典型的な場合
、ページの大きさが4にバイト[で、ページテーブル3
3のエントリ数が256個程度であるので、該共有領域
として指定できる最小の大きさがIMバイト程度と大変
大きくなってしまうことになる。
従って、例えば、プロセス間の通信バッファを実現した
いときのように、必要な領域が、数10にバイト程度で
よい場合等では、大変無駄になってしまうという問題が
あった。
又、最近、各種のデータ処理の分野で使用されているオ
ペレーティングシステム(O5) rUNIXJで発行
されるrforkJ命令等で、プロセスを複製する場合
、実際に書き込みのあった領域だけをコピして、その他
の部分は書き込みがある迄共有していることで、該rf
orkJ命令の処理の高速化を図る、所謂rcOPY−
ON−匈RITE J手法が良く知られているが、上記
の方式では、コピーする最小のm位がIMバイト程度と
大きいので、コピー量を少なくしてMl r fork
 J命令の処理の高速化を図る効果が少なくなってしま
うという問題があった。
更に、本方式の場合、上位の変換テーブル6a+7aの
属性フィールドに値を設定することで、同し領域に対す
るアクセス属性をプロセス毎に異なったものとすること
ができるが、その単位が大きくなってしまい、例えば、
ページ単位にアクセス属性を変えるといった柔軟な処理
ができないという問題があった。
(b)特定のプロセスのページテーブルの特定のエント
リが共有ページをポイントし、該エントリを他のプロセ
スのページテーブルからポイントする方式: この方式は、例えば、モトローラの1チッププロセッサ
rMc68030 J等で用いられている方式で、(b
)図に示したように、共有ページ(斜線で示す)201
1は、例えば、プロセス1のページチーフル8aのエン
トリ34がポイントし、該エントリ34を他のプロセス
2のページテーブル9aのエントリ35からポイントす
るように構成されている。
この方式では、図示されている如くに、共有領域の最小
即位がページとなる為、(a)で説明した共有単位の大
きさに起因する問題点は解消するが、該共有ページに対
するアクセスの属性は、例えば、プロセス1とプロセス
2とで共通となってしまうという問題がある。
勿論、より上位の変換テーブル、例えば、変換テーブル
6a、7aで該アクセス属性を設定すれば、プロセス間
で異なったアクセス属性とすることができるが、このよ
うにすると、結局、(a)図に説明した場合と同じく、
設定される範囲が広くなってしまうという問題があった
又、この方式では、共有を実現しているページテーブル
8a、9aを解放する場合の処理のオーバヘッドが大き
いという問題がある。
即ち、エントリ34を含むページテーブル8aを所有す
るプロセス1の実行が、該エントリ34を共有する他の
プロセス2に先立って終了してしまい、該ページテーブ
ル8aを解放する場合、該エントリ34を共有するエン
トリ 35を何らかの方法で検索した後、該エントリ3
4の内容をエントリ35にコピーするといった処理が必
要となる。
従って、共有しているプロセスの数が多い時には、処理
は更に複雑になる。
又、該エントリ34を共有する全てのエントリを見つけ
る為には、上記アドレス変換の為のテブルとは別に、共
有ページ20bをポイントしているエントリ34を共有
しているページテーブルエントリの全てをリンクしてい
るような余分なデ夕構造を用意する必要がある。
本発明は上記従来の欠点に鑑み、論理アドレスから物理
アドレスへのアドレス変換をサポートする計算機システ
ムにおいて、複数個のプロセス間で共有している領域を
ページ単位で、且つ、プロセス毎に異なったアクセス保
護属性を与えてアクセスできること、及び、該共有を実
現しているページテーブルのプロセス単位の開放時のオ
ーバヘッドを無くするページ共有方式を提供することを
目的とするものである。
〔課題を解決するための手段〕
上記の問題点は下記の如くに構成された間接ポインタを
用いたページ共有方式によって解決される。
(1)  論理アドレスから物理アドレスへの変換をサ
ポートする計算機システムにおいて、複数個のプロセス
の論理空間が1つの物理空間領域を共有するのに、 該共有領域に含まれる物理ページを↑旨し示す間接ポイ
ンタを設け、 各プロセスのページテーブルの特定のエントリが、各々
上記間接ポインタを指し示すことで、複数個のプロセス
がページ単位での共有を行うように構成する。
(2)上記間接ポインタを用いたページ共有方式該ペー
ジに固有な属性は、上記間接ポインタに、各プレセスに
固有な属性は、各プロセスに対応したページテーブルの
上記間接ポインタを指し示すエントリに、それぞれ分割
して保持し、アドレス変換機構が変換テーブルを参照す
る際には、上記間接ポインタと、各プロセス毎のページ
テーブルの上記間接ポインタを指し示すエントリの両方
を参照するように構成する。
〔作用] 即ち、本発明によれば、論理アドレスから物理アドレス
へのアドレス変換をサポートする計算機システムにおい
て、共有されない領域の通常のページを直接ポイントす
るページテーブルのエントリには、該ページの物理アド
レスを保持するフィルド、該ページが主記憶上に存在す
ることを示すフィールド、該ページが参照されたことを
示すフィールド、該ページが変更されたことを示すフィ
ールド1アクセス属性値を保持するフィールド及び、該
エントリが通常のエントリであることを示すフィールド
からなるのに対して、共有されるページをポイントする
本発明の間接ポインタには、該ページの物理アドレスと
、該ページが主記憶上に存在するごとを示すフィールド
、該ページが参照されたことを示すフィールド、及び該
ページが変更(即ち、書き換えられた)ことを示すフィ
ールドといった、該ページに固有な属性を持つが、各プ
ロセスに固有な属性、例えば、アクセス属性値を保持す
るフィールドを持たないように構成し、逆に、その間接
ポインタをポイントしているページテーブルエントリに
は、該間接ポインタの物理アドレスと、アクセス属性値
を保持するフィールド、及び該エントリが間接ポインタ
をポイントしているエントリであることを示すフィール
ドといった各プロセスに固有な属性を持っているが、他
のフィールドは持たないようにする。
尚、エントリの種別を表すフィールドは、エントリ内で
同じビット位置に設け、アドレス変換機構がその位置を
参照することで、該エントリの種別が判定できるように
なっている。
このように、本発明においては、複数個のプロセス間で
共有するページについては、各ページに対して、参照す
るプロセスに係わらず一元管理されるべき情報、即ち、
上記ページに固有な悄幸Uは間接ポインタに、参照する
プロセスによって異なった設定ができることが望ましい
情報、即ち、上記プロセスに固有な情報、例えば、上記
アクセス保護属性値等はページテーブルエン1−りに分
割して格納している。
従って、プロセス間で共有される領域を、ベジ単位で、
且つ、プロセス毎に異なるアクセス保護属性値を与えて
実現できる。又、共有を実現しているページテーブルを
解放する時の処理のオへヘッドがない。とうい効果があ
り、結果として、柔軟で高速なシステムの構築が可能に
なる。
〔実施例〕
以下本発明の実施例を図面によって詳述する。
第1図は本発明の一実施例を示した図であり、(a)は
構成例を示し、(b)は本発明の間接ポインタの構造を
示し、(cl)は間接ポインタをポイントしているペー
ジテーブルエントリの構造を示し、(c2)は通常のペ
ージをポイントしているページテーブルエントリの構造
を示し、(d)はアクセス変換テーブルへのアクセス手
順のフローであって、(a)図に示した間接ポインタ1
0と、該間接ポインタ10に対するページテーブル8,
9からのポイント手段、及び、(b)図、 (cl)図
に示した、該間接ポインタ1帆及び該間接ポインタ10
をポイントするページテーブルエントリのフィールド構
成法が本発明を実施するのに必要な手段である。尚、全
図を通して同じ符号は同じ対象物を示している。
以下、第1図によって、本発明の間接ポインタによるペ
ージ共有方式を説明する。
本発明を実施しても、アドレス変換テーブルによるアド
レス変換機構の基本的な動作は特に変わることはないの
で省略し、ここでは、共有ページに対するアクセス方式
を中心にして説明する。
先ず、(a)図において、プロセッサ1で主記憶5に対
するアクセスがあると、アドレス変換機構3において変
換テーブル起点レジスタ4が指し示す最上位の変換テー
ブル6から論理アドレスの特定のビットをオフセ、/ト
として、該主記憶5内のアドレス変換テーブル構造を順
次参照してい(。
そして、最下位のページテーブル日へ辿り着くと、エン
トリに付加されているエントりの種別を示すフィールド
((cl)図、 (c2)図に示したページテーブルエ
ントリのフィールド11−3.13−6+を参照する。
((d)図のフローのステップ50参jlQ lこれが
、通常のエントリ 13〜18の場合には、該ページの
物理アドレス13−1や、ページが主記憶上に存在する
かどうかの情II 13−2や、ページに対するアクセ
ス保護属性値13−5をこのエントリから得て、チエツ
クする。又、必要が有れば、参照/変更の情報13−3
/13−4をセットする。
これに対して、間接ポインタ1oを指すテーブルエント
リ 11,12に辿りついたことが検出された場合には
、更に、該間接ポインタ10へのアクセスも行う。
そして、本発明においては、アクセス保護属性のチエツ
クは、プロセス毎に異なる上記ページテブルエントリ 
11.12の情1111−2を用いて行うが、該ページ
(共有ページ) 20の物理アドレスは、間接ポインタ
1o上の情報l0−1から得るようにする。
然して、その共有ページ20が主記憶s上にあるかどう
かのチエツクや、参照/変更の情報のセントは、該ペー
ジに固有なものであるので、間接ポインタ10上の情報
10−2.10−3.10−4に対して行うようにする
上記本発明を特徴付ける処理の手順を示したものが、本
図(d)に示したフローである。
即ち、ページテーブル8.9の通常のエントリ 13〜
1日に対する処理(ステップ51〜54)と、間接ポイ
ンタ10に対するエントリ lL12に対する処理(ス
テップ55〜58)とが分かれているところに特徴があ
る。
このように、本発明の場合、通常エントリでの処理と1
間接ポインタ1oを指すページテーブルエントリでの処
理とが異なるように構成されている。
このような処理を、ページを共有しているもθでのプロ
セスの処理で実行することにより、複数個のプロセス間
でページ中1位の共有を実現することができる。
又、該共有ページ20に対応する間接ポインタ10は、
アクセスするプロセスによらず、該共有ページ20に固
有なものとなり、該間接ポインタ10上にある該ページ
についての固有な情報は矛盾なく一元管理することがで
きる。
更に、前述のアクセス保護属性値を保持するページテー
ブルエントリ lL12はプロセス毎に異なったものと
することができる。(第1図(cl)参照) 従って、同一の共有ページに対して、ページ単位に、プ
ロセス毎に異なったアクセス保護属性値を設定すること
ができる。
例えば、プロセスAはページテーブル8のエントリ 1
1に書き込み専用の属性値を与え、プロセスBはページ
テーブル9のエントリ 12に読み出し専用の属性値を
与えることにより、プロセスAから書き込んだデータを
プロセスBで読み取るといった共有データに対するアク
セスに方向性を持たせることができ、この設定したアク
セスの方向性に反するアクセスがあると、即、検出する
ことができる。
本図(a)から明らかな如く、本発明によるページテー
ブル8.9.及び間接ポインタ104こよる構成では、
ページ20を共有しているエントリ1112を含むペー
ジテーブルを1つ(例えば、ページテーブル8)だけを
消去しても、同じページを共有している他のページテー
ブル9のエントリ 12に対して何らの矛盾を生じない
ことは明らかである。
従って、該ページを共有するプロセスの内の1つが終了
し、そのプロセスが持っていたページテブルを解放する
場合にも、第2図(b)の従来方式で説明したような共
有ページ20bをポイントしているページテーブルエン
トリをポイントしている総てのエントリを検索する為の
データ構造を必要とせず、従って、該消去処理に何らの
オーバヘッドも生じることはない。
このように、本発明は、論理アドレスから物理アドレス
へのアドレス変換をサポートする計算機システムにおい
て、複数個のプロセスの論理空間が1つの物理空間領域
を共有するのに、該複数個のプロセスが共有するページ
をポイントする間接ポインタを設け、各プロセス毎に持
っているベーテブルの特定のエントリから該間接ポイン
タをポイントするように構成し、且つ、参照するプロセ
スに係わらず一元管理されるべき該共有ペジに固有な情
報は該間接ポインタで、参照するプロセスによって異な
った設定ができることが望ましい各プロセスに固有な情
報は、各プロセスに対応したページテーブルの上記間接
ポインタをポイントするエントリに、それぞれ分割して
保持することで、柔軟性のあるページ共有方式を実現し
た所に特徴がある。
〔発明の効果〕
以上、詳細に説明したように、本発明の間接ポ、インク
を用いたページ共有方式は、論理アドレスから物理アド
レスへのアドレス変換をサポートする計算機システムに
おいて、複数個のプロセスの論理空間が1つの物理空間
領域を共有する場合に、(11共有領域に含まれる物理
ページを指し示す間接ポインタを設け、各プロセスのペ
ージテーブルの特定のエントリが、各々上記間接ポイン
タを指し示すことで、複数個のプロセスがページ単位で
の共有を行うように構成する。(2)上記間接ポインタ
を用いたページ共有方式において、該ページに固有な属
性は上記間接ポインタに、各プロセスに固有な属性(ア
クセス保護属性)は各プロセスに対応したページテーブ
ルの上記間接ポインタを指し示すエントリに、それぞれ
分割して保持するようにしたものであるので、プロセス
間で共有される領域を、ページ単位で、且つ、プロセス
毎に異なるアクセス保護属性値を与えて実現でき、又、
共有を実現しているページテーブルを解放する時の処理
のオーバヘッドがないという効果があり、結果として、
柔軟で高速なシステムの構築が可能になる。
【図面の簡単な説明】
第1図は本発明の一実施例を示した図 第2図は従来の共有メモリ方式を説明する図。 である。 図面において、 はプロセッサ、    3はアドレス変換機構8は変換
テーブル起点レジスタ は主記憶 7.6a、7aは上位の変換テーブル 8、9.8a、 9aは最下位のページテーブル10は
間接ポインタ 11〜12は間接ポインタをポイントするエントリ13
〜18は通常のページをポイントするエントリ。 20、20a 、 20bは共有ページ31.32は上
位の変換テーブルのエントリ33は共有領域のページテ
ーブル 34は共有ページをポイントするページテーブルエント
リ。 35はエントリ34をポイントする池のページテーブル
エントリ。 50〜58は処理ステップ。 をそれぞれ示す。

Claims (2)

    【特許請求の範囲】
  1. (1)論理アドレスから物理アドレスへの変換をサポー
    トする計算機システムにおいて、複数個のプロセスの論
    理空間が1つの物理空間領域(20)を共有するのに、 該共有領域(20)に含まれる物理ページを指し示す間
    接ポインタ(10)を設け、 各プロセスのページテーブル(8、9)の特定のエント
    リ(11、12)が、各々上記間接ポインタ(10)を
    指し示すことで、複数個のプロセスがページ単位での共
    有を行うことを特徴とする間接ポインタを用いたページ
    共有方式。
  2. (2)上記間接ポインタを用いたページ共有方式におい
    て、 該ページに固有な属性は、上記間接ポインタ(10)に
    、各プロセスに固有な属性は、各プロセスに対応したペ
    ージテーブル(8、9)の上記間接ポインタ(10)を
    指し示すエントリ(11、12)に、それぞれ分割して
    保持し、アドレス変換機構(3)が変換テーブル(6、
    8、又は、7、9)を参照する際には、上記間接ポイン
    タ(10)と、各プロセス毎のページテーブル(8)の
    上記間接ポインタ(10)を指し示すエントリ(11、
    12)の両方を参照することを特徴とする請求項1に記
    載の間接ポインタを用いたページ共有方式。
JP63271353A 1988-10-27 1988-10-27 間接ポインタを用いたページ共有方式 Pending JPH02116940A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63271353A JPH02116940A (ja) 1988-10-27 1988-10-27 間接ポインタを用いたページ共有方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63271353A JPH02116940A (ja) 1988-10-27 1988-10-27 間接ポインタを用いたページ共有方式

Publications (1)

Publication Number Publication Date
JPH02116940A true JPH02116940A (ja) 1990-05-01

Family

ID=17498885

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63271353A Pending JPH02116940A (ja) 1988-10-27 1988-10-27 間接ポインタを用いたページ共有方式

Country Status (1)

Country Link
JP (1) JPH02116940A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0441508A2 (en) * 1990-02-09 1991-08-14 International Business Machines Corporation Data storage using a cache and method therefor
JP2000347940A (ja) * 1999-06-08 2000-12-15 Matsushita Electric Ind Co Ltd メモリ管理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0441508A2 (en) * 1990-02-09 1991-08-14 International Business Machines Corporation Data storage using a cache and method therefor
JP2000347940A (ja) * 1999-06-08 2000-12-15 Matsushita Electric Ind Co Ltd メモリ管理装置

Similar Documents

Publication Publication Date Title
US4513368A (en) Digital data processing system having object-based logical memory addressing and self-structuring modular memory
EP0208428B1 (en) Direct input/output in a virtual memory system
US5335334A (en) Data processing apparatus having a real memory region with a corresponding fixed memory protection key value and method for allocating memories therefor
US4807120A (en) Temporal garbage collector with indirection cells
GB2059652A (en) Memory protection system using capability registers
JPS6376034A (ja) 多重アドレス空間制御方式
EP0533427B1 (en) Computer memory control system
JPH02116940A (ja) 間接ポインタを用いたページ共有方式
US4493024A (en) Digital data processing system
US5450587A (en) Expanded memory addressing scheme
EP0285309A2 (en) Memory protection apparatus for use in an electronic calculator
JPS6113261B2 (ja)
JPS6220583B2 (ja)
JPS644214B2 (ja)
JPH0444140A (ja) 仮想メモリ制御方法
EP0787326B1 (en) System and method for processing of memory data and communication system comprising such system
JPS5853079A (ja) Stoスタツク制御方式
JPS6024491B2 (ja) アドレス変換制御方式
JP2612173B2 (ja) 仮想計算機
JPH04205535A (ja) コピーオンライト方式
JPH02101552A (ja) アドレス変換バッファ処理方式
JPH01125638A (ja) キャッシュメモリ装置
JPS59140566A (ja) 情報処理装置
JPH0368421B2 (ja)
JPH01108652A (ja) アドレス変換方式