JP2019504403A - メタデータ処理のための技法 - Google Patents
メタデータ処理のための技法 Download PDFInfo
- Publication number
- JP2019504403A JP2019504403A JP2018531549A JP2018531549A JP2019504403A JP 2019504403 A JP2019504403 A JP 2019504403A JP 2018531549 A JP2018531549 A JP 2018531549A JP 2018531549 A JP2018531549 A JP 2018531549A JP 2019504403 A JP2019504403 A JP 2019504403A
- Authority
- JP
- Japan
- Prior art keywords
- metadata
- tag
- instruction
- rule
- data
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 646
- 238000012545 processing Methods 0.000 title claims abstract description 549
- 230000015654 memory Effects 0.000 claims description 983
- 230000008569 process Effects 0.000 claims description 203
- 238000012546 transfer Methods 0.000 claims description 157
- 230000004224 protection Effects 0.000 claims description 117
- 239000004744 fabric Substances 0.000 claims description 49
- 238000003860 storage Methods 0.000 claims description 49
- 238000012795 verification Methods 0.000 claims description 49
- 230000001960 triggered effect Effects 0.000 claims description 47
- 238000004040 coloring Methods 0.000 claims description 42
- 230000009471 action Effects 0.000 claims description 39
- 230000004044 response Effects 0.000 claims description 38
- 239000003086 colorant Substances 0.000 claims description 36
- 238000013507 mapping Methods 0.000 claims description 29
- 239000013598 vector Substances 0.000 claims description 25
- 230000002829 reductive effect Effects 0.000 claims description 22
- 238000011068 loading method Methods 0.000 claims description 17
- 230000001404 mediated effect Effects 0.000 claims description 9
- 238000011010 flushing procedure Methods 0.000 claims description 3
- 230000001902 propagating effect Effects 0.000 claims description 3
- 238000013524 data verification Methods 0.000 claims description 2
- 210000002784 stomach Anatomy 0.000 claims 1
- 230000006399 behavior Effects 0.000 description 56
- 230000015572 biosynthetic process Effects 0.000 description 51
- 238000010586 diagram Methods 0.000 description 51
- 238000003786 synthesis reaction Methods 0.000 description 51
- 230000007246 mechanism Effects 0.000 description 41
- 230000000875 corresponding effect Effects 0.000 description 34
- 238000005457 optimization Methods 0.000 description 34
- 238000001193 catalytic steam reforming Methods 0.000 description 22
- 230000000694 effects Effects 0.000 description 22
- 230000006870 function Effects 0.000 description 21
- 230000008859 change Effects 0.000 description 20
- 230000003068 static effect Effects 0.000 description 20
- 101100138677 Arabidopsis thaliana NPF8.1 gene Proteins 0.000 description 19
- 101150059273 PTR1 gene Proteins 0.000 description 19
- 101100262635 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) UBR1 gene Proteins 0.000 description 19
- 238000004088 simulation Methods 0.000 description 18
- 238000013461 design Methods 0.000 description 16
- 230000002123 temporal effect Effects 0.000 description 15
- 230000008901 benefit Effects 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 14
- 238000006243 chemical reaction Methods 0.000 description 14
- 239000002131 composite material Substances 0.000 description 14
- 238000011156 evaluation Methods 0.000 description 14
- 238000003780 insertion Methods 0.000 description 14
- 230000037431 insertion Effects 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 12
- DGLFSNZWRYADFC-UHFFFAOYSA-N chembl2334586 Chemical compound C1CCC2=CN=C(N)N=C2C2=C1NC1=CC=C(C#CC(C)(O)C)C=C12 DGLFSNZWRYADFC-UHFFFAOYSA-N 0.000 description 12
- 238000002955 isolation Methods 0.000 description 12
- 239000000203 mixture Substances 0.000 description 12
- 230000006835 compression Effects 0.000 description 11
- 238000007906 compression Methods 0.000 description 11
- 230000014509 gene expression Effects 0.000 description 11
- 238000011160 research Methods 0.000 description 11
- 230000003449 preventive effect Effects 0.000 description 10
- 230000000644 propagated effect Effects 0.000 description 10
- 238000000926 separation method Methods 0.000 description 10
- 238000010200 validation analysis Methods 0.000 description 10
- 230000000670 limiting effect Effects 0.000 description 9
- 101000686491 Platymeris rhadamanthus Venom redulysin 1 Proteins 0.000 description 8
- 230000001133 acceleration Effects 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 7
- 238000012790 confirmation Methods 0.000 description 7
- 238000007792 addition Methods 0.000 description 6
- 230000015556 catabolic process Effects 0.000 description 6
- 238000006731 degradation reaction Methods 0.000 description 6
- 238000002474 experimental method Methods 0.000 description 6
- 238000002347 injection Methods 0.000 description 6
- 239000007924 injection Substances 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 230000000873 masking effect Effects 0.000 description 6
- 239000000243 solution Substances 0.000 description 6
- 239000011800 void material Substances 0.000 description 6
- 239000003999 initiator Substances 0.000 description 5
- 238000012549 training Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- WNEODWDFDXWOLU-QHCPKHFHSA-N 3-[3-(hydroxymethyl)-4-[1-methyl-5-[[5-[(2s)-2-methyl-4-(oxetan-3-yl)piperazin-1-yl]pyridin-2-yl]amino]-6-oxopyridin-3-yl]pyridin-2-yl]-7,7-dimethyl-1,2,6,8-tetrahydrocyclopenta[3,4]pyrrolo[3,5-b]pyrazin-4-one Chemical compound C([C@@H](N(CC1)C=2C=NC(NC=3C(N(C)C=C(C=3)C=3C(=C(N4C(C5=CC=6CC(C)(C)CC=6N5CC4)=O)N=CC=3)CO)=O)=CC=2)C)N1C1COC1 WNEODWDFDXWOLU-QHCPKHFHSA-N 0.000 description 4
- 238000013459 approach Methods 0.000 description 4
- 230000001276 controlling effect Effects 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 3
- 101150089655 Ins2 gene Proteins 0.000 description 3
- 101100072652 Xenopus laevis ins-b gene Proteins 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000001186 cumulative effect Effects 0.000 description 3
- 238000000354 decomposition reaction Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- VPWFPZBFBFHIIL-UHFFFAOYSA-L disodium 4-[(4-methyl-2-sulfophenyl)diazenyl]-3-oxidonaphthalene-2-carboxylate Chemical compound [Na+].[Na+].[O-]S(=O)(=O)C1=CC(C)=CC=C1N=NC1=C(O)C(C([O-])=O)=CC2=CC=CC=C12 VPWFPZBFBFHIIL-UHFFFAOYSA-L 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 239000003607 modifier Substances 0.000 description 3
- 230000008450 motivation Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- UKGJZDSUJSPAJL-YPUOHESYSA-N (e)-n-[(1r)-1-[3,5-difluoro-4-(methanesulfonamido)phenyl]ethyl]-3-[2-propyl-6-(trifluoromethyl)pyridin-3-yl]prop-2-enamide Chemical compound CCCC1=NC(C(F)(F)F)=CC=C1\C=C\C(=O)N[C@H](C)C1=CC(F)=C(NS(C)(=O)=O)C(F)=C1 UKGJZDSUJSPAJL-YPUOHESYSA-N 0.000 description 2
- 102100030154 CDC42 small effector protein 1 Human genes 0.000 description 2
- 101100434927 Caenorhabditis elegans prmt-5 gene Proteins 0.000 description 2
- 101000794295 Homo sapiens CDC42 small effector protein 1 Proteins 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000007123 defense Effects 0.000 description 2
- 238000004880 explosion Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000011835 investigation Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000006886 spatial memory Effects 0.000 description 2
- 235000020042 tonto Nutrition 0.000 description 2
- VLCQZHSMCYCDJL-UHFFFAOYSA-N tribenuron methyl Chemical compound COC(=O)C1=CC=CC=C1S(=O)(=O)NC(=O)N(C)C1=NC(C)=NC(OC)=N1 VLCQZHSMCYCDJL-UHFFFAOYSA-N 0.000 description 2
- BYHQTRFJOGIQAO-GOSISDBHSA-N 3-(4-bromophenyl)-8-[(2R)-2-hydroxypropyl]-1-[(3-methoxyphenyl)methyl]-1,3,8-triazaspiro[4.5]decan-2-one Chemical compound C[C@H](CN1CCC2(CC1)CN(C(=O)N2CC3=CC(=CC=C3)OC)C4=CC=C(C=C4)Br)O BYHQTRFJOGIQAO-GOSISDBHSA-N 0.000 description 1
- 101150053844 APP1 gene Proteins 0.000 description 1
- 241000219357 Cactaceae Species 0.000 description 1
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 description 1
- 244000035744 Hura crepitans Species 0.000 description 1
- 125000002066 L-histidyl group Chemical group [H]N1C([H])=NC(C([H])([H])[C@](C(=O)[*])([H])N([H])[H])=C1[H] 0.000 description 1
- 241001024304 Mino Species 0.000 description 1
- 101000686495 Platymeris rhadamanthus Venom redulysin 2 Proteins 0.000 description 1
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 240000003243 Thuja occidentalis Species 0.000 description 1
- 206010000210 abortion Diseases 0.000 description 1
- 238000004026 adhesive bonding Methods 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- ONTQJDKFANPPKK-UHFFFAOYSA-L chembl3185981 Chemical compound [Na+].[Na+].CC1=CC(C)=C(S([O-])(=O)=O)C=C1N=NC1=CC(S([O-])(=O)=O)=C(C=CC=C2)C2=C1O ONTQJDKFANPPKK-UHFFFAOYSA-L 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000011049 filling Methods 0.000 description 1
- 239000000796 flavoring agent Substances 0.000 description 1
- 235000019634 flavors Nutrition 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000005291 magnetic effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- WPPDXAHGCGPUPK-UHFFFAOYSA-N red 2 Chemical compound C1=CC=CC=C1C(C1=CC=CC=C11)=C(C=2C=3C4=CC=C5C6=CC=C7C8=C(C=9C=CC=CC=9)C9=CC=CC=C9C(C=9C=CC=CC=9)=C8C8=CC=C(C6=C87)C(C=35)=CC=2)C4=C1C1=CC=CC=C1 WPPDXAHGCGPUPK-UHFFFAOYSA-N 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 238000011012 sanitization Methods 0.000 description 1
- 238000005204 segregation Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000004432 silane-modified polyurethane Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Databases & Information Systems (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- User Interface Of Digital Computer (AREA)
- Retry When Errors Occur (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
Description
本出願は、2015年12月17日に出願された米国仮出願第62/268,639号、SOFTWARE DEFINED METADATA PROCESSING、および2015年12月21日に出願された米国仮出願第62/270,187号、SOFTWARE DEFINED METADATA PROCESSINGの優先権を主張する、2016年5月31日に出願された米国出願第15/168,689号の優先権を主張し、これらのすべての全体が参照によって本明細書に組み込まれる。
妨げるであろう。
load:(-,-,c1,-,(c2,t2))
→(-,t2)if c1=c2
store:(-,-,t1,c2,(c3,t3))
→(-,(c3,t1))if c2=c3
アドレス算術演算がポインタタグを保存する:
add: (-,-,c,⊥,-)→(-,c)
不変条件を保つために、ポインタ上のそのタグは割振りから発生することだけが可能であり、最初からデータを作成する動作(たとえば、定数のロード)はそのタグを⊥に設定する。
move: (-,tmalloc,t,-,-)→1(-,tnewtag)
などの一時的なルールであり得る。1の上付き文字を伴う矢印(たとえば、→1)は、一時的なルールを示し得る。次いで、タグ付けされたポインタを返す前に、特別なstoreルール
store: (-,tmallocinit,t1,c2,F)→(-,(c2,t1))
を使用して、割り振られる領域の中の1つ1つの作業に0を書き込むために、新しくタグ付けされたポインタが使用され得る。ある後の時点で、freeは、領域をfreeリストに返す前に、割り振られていないものとして領域を再タグ付けするために、変更されたstore命令を使用し得る。
store: (-,tfreeinit,t1,c2,(c3,t4))→(-,F)
(1) nop,cbranch,ubranch,ijump,return: (-,-,-,-,-)→(-,-)
(2) ar2sld: (-,-,⊥,⊥,-)→(-,⊥)
(3) ar2sld: (-,-,c,⊥,-)→(-,c)
(4) ar2sld: (-,-,⊥,c,-)→(-,c)
(5) ar2sld: (-,-,c,c,-)→(-,⊥)
(6) ar1sld: (-,-,t,-,-)→(-,t)
(7) ar1ld,dcall,icall,flags: (-,-,-,-,-)→(-,⊥)
(8) load: (-,-,c1,-,(c2,t2))→(-,t2)if c1=c2
(11) store: (-,tfreeinit,t1,c2,(c3,t4))→(→,F)
(12) move: (-,tmalloc,t,-,-)→1(-,tnewtag)
ar2sld:(0,0,23,0,0,)→(0,23)
ar2sld:(0,0,24,0,0,)→(0,24)
本明細書の他の箇所の議論と一貫して、少なくとも1つの実施形態では、ミスハンドラは、具体的な入力タグを取得し、ルールをPUMPルールキャッシュへと挿入するためにシンボリックルールからコンパイルされたコードを実行して関連する具体的な出力タグを産生することができる。シンボリックルールが侵害を特定するとき、制御はエラーハンドラに移転し、新しいコンクリートルールはPUMPルールキャッシュに挿入されない。
。ユーザコードまたはアプリケーションのそのような実行は、トラップハンドラ呼出しをトリガしたUモードにおける元のトラップされた命令において、またはその後で再開し得る。RISC-V実装形態におけるサポートされるモードの様々な組合せは、単一のMモード、MおよびUの2つのモード、M、S、およびUの3つのモード、またはすべての4つのモードM、H、S、Uのみを含み得る。本明細書で説明される少なくとも1つの実施形態では、前述の特権レベルの4つすべてがサポートされ得る。最低でも、本明細書の技法に従ったある実施形態は、MモードおよびUモードをサポートし得る。
1. Opgrp - 特定のオペグループが現在の命令を含むことを示す。一般に、オペグループは命令のグループの抽象化であり、本明細書の他の箇所で論じられる。
2. PCtag - PCのタグ
3. CItag - 命令のタグ
4. OP1tag - 命令へのRS1入力のタグ
5. OP2tag - 命令へのRS2入力のタグ(またはCSR命令のときはCSRのタグ)
6. OP3tag - 命令へのRS3入力のタグ
7. Mtag - 命令へのメモリ入力または命令のメモリターゲットのタグ
8. funct12(funct7) - 本明細書の他の箇所で説明されるようないくつかの命令で発生する拡張されたオペコードビット
9. subinstr - あるワードに詰め込まれた複数の命令があるとき、この入力は、そのワードの中のどの命令がPUMPにより動作している現在の命令であるかを特定する。
1. Rtag - 結果のタグ:宛先レジスタ、メモリ、またはCSR
2. newPCtag - この動作の後のPCのタグ(たとえば、場合によってはPCnew tagと本明細書では呼ばれる)
・ RDtag←CSRtag
・ CSRtag←Rtag
・ newPCtagはデフォルトの伝播のためのPCtagである
・ RtagはCSRの読取りおよび書込みの動作のためのRS1tagである;RDtagはRS2tag(CSRtag)を割り当てられる
- タグがデータ値とともにスワップすることを可能にする
- RDtag←RS2tag←元のCSRtag
- CSRtag←Rtag←元のRS1tag
・ RtagはCSRR?I、CSRRS、CSRRCのためのRS2tag(CSRtag)である
- CSRtagを不変に保つ
- RDtag←RS2tag←元のCSRtag
- CSRtag←Rtag←元のRS2tag←元のCSRtag
・ RtagはJALおよびJALR命令のためのPCtagである(これはリターンアドレスのためのものである)
・ RtagはAUIPC命令のためのPCtagである。RISC-Vでは、AUIPC(add upper immediate to PC)命令が、PC関連のアドレスを構築するために使用され、Uタイプのフォーマットを使用する。AUIPCは、20ビットのU-immediateから32ビットのオフセットを形成し、下位12ビットを0で埋め、このオフセットをPCに追加し、次いで結果をレジスタrdに置く。
・ RtagはLUI命令のためのCItagである。RISC-Vでは、LUI(load upper immediate)命令は、32ビットの定数を構築するために使用され、Uタイプのフォーマットを使用する。LUIは、宛先レジスタRDの上位20ビットにU-immediate値を置き、下位12ビットを0で埋める。
・ Rtagは、非メモリ、非CSR、および非JAL(R)/AUIPC/LUI動作のためのRS1tagである
・ Rtagはメモリ書込み動作のためのRS2tagである
・ Rtagはメモリロード動作のためのMtagである
な分離は、別個のプロセッサおよび別個のメモリを伴う別個の物理的なメタデータ処理サブシステムを有することにより維持され得る。したがって、第1のプロセッサおよび第1のメモリは、プログラムを実行する命令を処理するときに使用されることがあり、第2のプロセッサおよび第2のメモリは、ルールキャッシュミスハンドラのコードを実行するときなどにメタデータ処理を実行することとともに使用するメタデータ処理サブシステムに含まれることがある。
1. PCtagは、出力ケアビットがPC new tagに対してオフであるときに変化しない
2. Rtagは、CSRRW動作のためのOp1tagである
3. Rtagは、CSRR?I、CSRRS、CSRRC動作のためのOp2tag(CSRtag)である
4. Rtagは、JALおよびJALR命令のためのPCtagである
5. Rtagは、AUIPC命令のためのPCtagである
6. Rtagは、LUI命令のためのCItagである
7. Rtagは、出力ケアビットがオフであるとき(Rtagに対するケアを示す)、非メモリ、非CSR、非JAL(R)/AUIPC/LUI動作のためのOp1tagである
8. Rtagは、出力ケアビットがオフであるとき、メモリ書込み動作のためのOp2tagである
9. Rtagは、出力ケアビットがオフであるとき、メモリロード動作のためのMtagである
1. 404aのビットは使用されないので12ビットすべてがマスクされてもよい;
2. 402aにより示されるような12ビットのうちの7ビットが使用され、404aの下位5ビット(たとえば、ビット20〜25)はマスクされる;または
3. 404aの12ビットすべてが使用されるので、404aのビットのマスキングはない
PCtag=Xの場合、書込みを許容する
PCtag=Yの場合、読取りのみを許容する
そのような場合、PC tagは、プロセスP1に対する書込みアクセスを許容するようにルールにより解釈されるXという値を有するので、P1は第1の命令を実行することが許容される。プロセスP2は432aにおいてメモリ位置への書込みを実行する第2の命令を実行していることがあり、現在のPC tagはYという値を有する。そのような場合、PC tagは、プロセスP2のために書込みアクセスを許容せず、むしろ読取り専用のアクセスを許容するようにルールによって解釈されるYという値を有するので、P2は第2の命令を実行することが許容されない。
int setjmp(jmp_buf env)
ここで、setjmpはローカルのjmp_bufバッファをセットアップし、ジャンプのためにそれを初期化する。Setjmpは、longjmpにより後で使用するために、env引数により指定される環境バッファにプログラムの呼出し環境を保存する。リターンが直接の呼出しからである場合、setjmpは0を返す。リターンがlongjmpへの呼出しからである場合、setjmpは0ではない値を返す。
void longjmp(jmp_buf env,int value)
ここで、longjmpは、プログラムの同じ呼出しにおけるsetjmpルーチンの呼出しによって保存された環境バッファenvのコンテキストを復元する。ネストされた信号ハンドラからlongjmpを呼び出すことは定義されていない。valueにより指定される値は、longjmpからsetjmpに渡される。longjmpが完了した後で、setjmpの対応する呼出しがリターンしたばかりであるかのように、プログラム実行が継続する。longjmpに渡される値が0である場合、setjmpはそれが1を返したかのように振る舞い、そうではない場合、それがvalueを返したかのように振る舞う。
If(CI=PROLOG STACK TAG)AND(これがメモリ書込み動作である)then
出力またはRtag=STACK FRAME TAG
前述のルール論理において、出力タグはスタック位置に付けられるタグを指す。
if(CI=EPILOG STACK TAG)AND(メモリ書込み動作)AND
(Mtag=STACK FRAME TAG)then出力またはRtag=Default tag
if(メモリ読取り動作)AND(R2tag=STACK FRAME POINTER)AND(Mtag=STACK FRAME TAG)then Rtag=DEFAULT TAG
if(メモリ読取り動作)AND(CItag=STACK FRAME INSTRUCTION)AND(Mtag=STACK FRAME TAG)then Rtag=DEFAULT TAG
1. 追加タグ714aにより出力されるタグ付けされたデータは信頼されないバッファに記憶され得る(公開であり信頼されないものとしてタグ付けされる)。
2. 信頼されないバッファに記憶されているタグ付けされたデータを復号して復号バッファに記憶する。したがって、復号バッファは公開であり信頼されていないものとしてタグ付けされる復号されたデータを含む。
3. 有効な汚染されていないデータを復号バッファが含むことを確実にするために検証処理を実行する。そのような検証処理は、本明細書の他の箇所で説明され当技術分野において知られているようなデジタル署名を使用し得る。
4. 復号バッファが検証データを含む場合、信頼されるコードの第2の部分が、公開であり信頼されていないものとしてタグ付けされる復号バッファのデータを信頼されるものとしてタグ付けされるデータに変換するために実行され得る。信頼されるコード部分は、実行されると、信頼され公開であるものとして復号バッファのデータを再タグ付けするためにルールを呼び出す、1つまたは複数の命令を含み得る。信頼されており公開であるものとしてここでタグ付けされる、再タグ付けされたデータは、外部DRAM712cの中に位置する信頼されるバッファに記憶され得る。
for i=1 to N
temp=*untrusted buffer[i]
trusted buffer[i]=temp
ここで、Nは信頼されないバッファの長さであり、tempは実行される再タグ付けのために使用される一時バッファである。第1の命令であるtemp=*untrusted buffer[i]は、タグ付けされていないメモリ716からの信頼されないバッファの第1の要素をtempへとロードする、ロード命令をもたらし得る。第2の命令であるtrusted buffer[i]=tempは、公開であり信頼されていないものとしてtempにおいてタグ付けされるデータを、公開であり信頼されるという新しいタグとともにtrusted buffer[i]に記憶する、記憶命令であり得る。したがって、第2の命令は、「信頼されていない」から「信頼される」へとデータを再タグ付けすることを実行する権限を有するように、上で述べられたように特別にタグ付けされた命令である。
がアクセス不可能であり、例1000および本明細書の他の箇所に関連して説明されるものなどのメタデータプロセッサまたはサブシステムにより処理される)。mallocメタデータは、たとえば、割り振られたメモリブロックのサイズ、後で割り振られるメモリブロックのためのmallocメタデータ部分へのポインタなどの、割り振られたメモリブロックについての情報を含み得る。
mv rule1A: (-,t malloc,blue-predecessor,-,-)→(-,blue)
であり得る。上のルールは、CI tagがtmallocであり、したがってmallocにおけるタグ付けされたmove命令のためのものであるときにのみ、発火する。mallocにより使用されるポインタがP1であると仮定すると、上のmv rule 1Aは、レジスタR2に記憶されているP1がblueのメモリ位置(たとえば、blueタグでタグ付けされたメモリ位置)へのポインタであることを示すために、タグまたは色blueでP1をタグ付けする。
store 2A:(-,t malloc,-,blue,F)→(-,blue)
mv rule 1B: (-,t malloc_md,-,-,-)→(-,red)
であり得る。
store 2B:(-,t malloc_md,-,red,F)→(-,red)
store 2D:(-,t malloc_md,-,red,red)→(-,red)
であることがあり、これは、store命令がタグ付けされたtmallocである場合、アドレスP1を格納するR7レジスタがredにタグ付けされる場合、およびMRオペランドがFとしてタグ付けされる場合に、記憶を実行する。ある実施形態は、上で述べられたstore 2Bルールの変形である上で述べられたstoreルール2D(store 2D)も含むことがあり、これにより、store 2Dルールが、メタデータ値の更新が望まれる場合に使用されることがあることに留意されたい。
store rule 3:(-,t free,-,blue,blue)→(-,F)
であり得る。
mv rule1C: (-,t free,-,-,-)→(-,red)
であり得る。
store rule 4:(-,t free,-,red,red)→(-,F)
であることがあり、これは、store命令がtfreeとタグ付けされる場合、かつMRオペランドがredとタグ付けされるポインタを使用する場合に、記憶を実行する。メモリ位置は「F」でタグ付けされ、今やそのメモリ位置を空いているものとして示す。
Add 0,R2
などの第1の命令INS1を含むことがあり、ここでR2は、エリア1102aの中のアドレスP6などのmallocメタデータ部分の中のアドレスであり、(R2)はredで色付けされた1102aの中のアドレスP6を有するメモリ位置を示す。前述の命令INS1は、実行されると、X1などのタグ値を有するPCnewの生成をもたらすことがあり、ここでX1は1102aにアクセスするのに必要な特権を示す。この場合、上の第1の命令INS1のためにトリガされるルールは、R2を色redで色付けし、また、R2に記憶されているアドレス(たとえば、アドレスP6)を有するメモリ位置への読取り/書込みアクセス権を示すためにPCをX1に設定するために、
add:(-,tmalloc,--,red,-)→(X1,red)
であり得る。続いて、mallocは、アドレスP6(P6はR2に記憶されている)を有するメモリ位置へとレジスタR3からの値(たとえば、OP1)を記憶するために、「store R3,(R2)」という第2の命令INS2を含み得る。上の第2の命令INS2のためにトリガされるルールは、
store:(X1,tmalloc,-,red,red)→(PCdefault,red)
であることがあり、PCnewは、mallocメタデータ部分1102aにアクセスする特権を示さないデフォルトのPC tagであるPCdefaultへとクリアまたはリセットされる。したがって、この特定の例では、第1のADD命令は、1102aへの読取り/書込みアクセスのための特権または権限をmallocに付与するためにルールをトリガする。書込みを実行するmallocの上の第2の命令が実行された後で、伝播されるPC tagは、1102aへの読取り/書込みアクセスのための特権または権限をmallocから削除する。変形として、ある実施形態は、X1のPCnew tagを生成することによって1102aへの読取り/書込みアクセス権をmallocに付与するためのルールをトリガする命令を含む、プロローグを伴うmallocのバージョンを含み得る(たとえば、プロローグは上で述べられたルールをトリガするADD命令INS1を含む)。リターンの前のmallocの終わりに、実行されると、PCdefaultのPCnew tagを生成することによって1102aへのmallocの読取り/書込みアクセス権を削除するためのルールをトリガする命令を含む、エピローグが実行され得る(たとえば、エピローグは上で述べられたルールをトリガするstore命令INS2を含む)。
gmd R1,R2,R3
ここで、
R1はPUMPまたはメタデータ処理により返される結果値を格納し、
R2はアドレスPTR2を有するメモリ位置の色でタグ付けされたアドレスPTR2を格納し、
R3は有効なmallocメタデータエリアに対して予期されるような有効な色でタグ付けされる。
したがって、R2およびR3は入力またはソースオペランドであるレジスタであることがあり、R1は結果または出力を格納するレジスタであることがある。この特定の例では、R3tagは有効なmallocメタデータエリアの色を示すredであることがあり、R2tagはblueであることがある。新しい命令により呼び出されるルールは、この例ではR2tag=R3tagであるかどうかを示すブーリアンとしてリターン値を出力することがあり、ここで前述のブーリアンの結果は、ユーザ実行コードのアドレス空間に含まれる、freeがアクセス可能なレジスタR1に記憶されるメタデータルール処理により出力される(たとえば、PUMP出力)リターン値であり得る。R1は本明細書の他の箇所の議論と一貫して、結果タグとしてRtagでタグ付けされ得ることに留意されたい。
free(char *PTR1)
PTR2=PTR1-OFF1;/**PTR
if(IS_RED(PTR2))then
PTR2が有効に色付けされたmallocメタデータエリアを指す。割振り解除のための処理を実行する。
else
PTR2が有効に色付けされたmallocメタデータエリアを指さない。復元処理を実行する。
gmd:(-,NI,t1,t2,-)→(-,SPEC1,NEWOUT)
ここで、t1=t2の場合NEWOUT=1であり、それ以外の場合NEWOUT=0である。
load R1,(R2)
加えて、第2の命令1404が、R2に記憶されているアドレスを有するメモリ位置へと0を移動するmove命令であると仮定する。move命令は次のようなものであり得る。
move 0,(R2)
本明細書の他の箇所で述べられる規約に従うと、ルールは、opcode、入力タグPCtag、CItag、OP1tag、OP2tag、Mtag、および出力タグPCnewtag、Rtagとして定義され得る。前述のルール規約に基づくと、第1のload命令に対して、OP1はR1であり、OP2はR2であり、(R2)はMtagとしてタグ付けされるメモリ位置である。第1のload命令によりトリガされる第1のルールは、
load: (-,linear read,-,-,linear variable X1)→
(clear-linear-variable-X1-next,-)
であり得る。前述のルール規約に基づくと、第2の記憶命令に対して、OP1は0であり、OP2はR2であり、(R2)はMtagとしてタグ付けされるメモリ位置である。第2のmove命令によりトリガされる第2のルールは、
move:(clear-linear-variable-X1-next,-,EMPTY,-,linear variable X1)→
(default tag,-)
であり得る。
1. R1←boottag CSRを読み取る
2. Add R2←R1+1
3. Add R3←R2+1
4. Add R4←R3+1
ケンスの中の次のタグを取得するために使用され得る。次いで、RED-APP1-gen、BLUE-APP1-gen、またはGREEN-APP1-genからそれぞれ、実際の色RED-APP1、BLUE-APP1、またはGREEN-APP1を生成するために、タグ付けされたMOVE命令が使用され得る(ここで、追加のタグシーケンスをさらに生成するために、RED-APP1、BLUE-APP1、GREEN-APP1を使用することはできない)。
1. アトム(たとえば、レジスタ、メモリ位置)のタグ部分にシーケンス状態を記憶/保存すること、
2. 保存/記憶されたシーケンス状態を使用してシーケンスの次のタグを生成するルールをトリガする命令を実行すること、および、
3. アトムのタグ部分に(2から生成された)シーケンスの次のタグを記憶/保存すること、ここで次のタグはシーケンスの更新された現在の状態である。
以下が、一実施形態におけるI/O PUMP入力である。
1. Opgrp-現在は2つある:ロードおよび記憶
2. PCtag-DMA IOデバイスの状態(コードのためのPCtagに類似する)
3. CItag-DMA IOデバイスを特定するタグ(コードの指定された領域の命令タグに類似する)
4. OP1tag-常に「公開であり信頼されない」(IOPUMPキャッシュにおいて物理的に表されないが、ルールのために使用される)と仮定する
5. OP2tag-OP1tagと同じ
6. Mtag-DMA動作へのメモリ入力のタグ
7. byteenable-どのバイトが読み取られている/書き込まれているか?
以下が、一実施形態におけるI/O PUMP出力である。
8. Rtag-記憶のためのメモリ結果のタグ
10. PCnew tag-この動作の後のDMA I/Oデバイスの状態
特定のDMAデバイスが許容されないロードおよび/または記憶動作を実行する場合、特定のDMAデバイスと関連付けられる状態は、さらなる要求(たとえば、DMAのロードおよび記憶)が無視されるように、無効へと変更され得る。
1)特定のアドレスのタグ値(複数のアドレスに対してタグ値がそのレベルにおける一様なタグ値であることを示す)、
2)キャッシュが特定のアドレスのタグ値を指定せず、階層の中のより低いレベルにあるキャッシュが特定のアドレスのタグ値を取得するために調べられる必要があることのインジケータ(この特定のレベルは特定のアドレスのための一様なタグ値を指定しない)、または
3)特定のアドレスに対応するノードまたはタグ情報を含むキャッシュ位置がその特定のレベルのキャッシュの中にないことを示す、ヌルまたは第2のインジケータ。第2のインジケータは、最下位ではないより下位のレベルのキャッシュにおけるキャッシュがアドレスのためのノード情報またはタグ情報を含まないことも示す。これは以下でより詳細に論じられる。
ADD R1←R1+R1
ここで、ADD命令(たとえば、RISC-V命令セットにおけるADDIなど)はカーネルコードによりタグ付けされており、CFI-alloc-tagの特別なCI tagが、許容可能なタグ生成源命令としてこの命令をマークする。少なくとも1つの実施形態では、ソースタグの異なるシーケンスが、CFIポリシーに関連して各アプリケーションのためのローダによって生成され得る(たとえば、例1620において、ローダは、アプリケーションのためのCFIソースタグの固有のシーケンスとして、CFIタグ1630の異なるシーケンスを使用することがあり、ここでCFIタグのシーケンスは、1627のCFI tag生成源App-nタグのうちの特定の1つから生成され得る)。CFI-alloc-tagは、ADD命令は、ADD命令がアプリケーション固有のCFIシーケンスにおいて次のタグを割り振り、または生成することを許容されることを示す、上のローダADD命令に付けられるCI tagである。CFI-alloc-tagは、例1620に関連して説明されるような1624の特別な命令タイプのうちの1つであり得る。上のADD命令は、R1のタグがCFIシーケンスの状態を保持することを示し、ここで、状態は以前に生成されたシーケンスの最後のタグであり得る。上のADD命令の実行は、CFIシーケンスにおける次の新しいタグを生成し、その新しく生成されたタグとなるようにR1のタグを更新する、ルールをトリガする。本明細書の他の箇所で説明されるようなルール規約を使用すると、以下のADDルールは上のADD命令によりトリガされるルールを示し得る。
ADD:(-,CFI-alloc-tag,t1,t1,--)→(-,t1next)
これは、ADDI命令のためのCI tagがCFI-alloc-tagであることを確実にする。このADDルールにおいて、t1は、シーケンスの中の次のタグt1nextを生成するために使用されるシーケンスの中の以前のタグ(アプリケーションのためのCFIタグシーケンスの現在の状態として保存される)を示し、ここでt1nextはRD(宛先または結果レジスタ)のためのタグとして記憶される。CFIシーケンスの中の上記のタグt1nextは、ソース点に付けられる固有のCFIソースタグとして使用され得る。
ST R1→R3
ここで、R3はタグ付けされているユーザプログラムコードの中の制御フローのソース位置(たとえば、例1700における1704a)へのポインタであり、R1のタグはソース位置に付けられるべき固有のCFIソースタグである。上のST命令はまた、ST命令が以下のルールSTをトリガするローダコードに含まれることを示す、CI-LDRなどの特別なCI tagでタグ付けされ得る。
ST: (-,CI-LDR,t1,-,codetag)→(-,t1)
ここで、CI tag=CI-LDRであり、t1はR1のタグとして現在記憶されているCFIソースタグであり、codetagはアドレスR3におけるソース位置にある命令タグである(たとえば、ソース位置がコードとして現在タグ付けされることを確実にする)。結果として、宛先(R3)は固有のCFIソースタグt1でタグ付けされる。
ADD R2←R2+R3
ここで、R2のタグは許容可能なソース位置の累積された集合を示すメモリ位置を指す。上のADD命令は、このADD命令がCFIソースの和集合動作を実行することと、この和集合がR2のタグとして記憶されることとを示す、特別なCFI UNION命令タグでタグ付けされ得る。ADDのための以下のルールが、上のADD命令の結果として発火され得る。
ADD: (-,CFI UNION,tset,tsrc,-)→(-,tunion)
これは、CI tagがCFI UNIONであることと、tsetがターゲット集合であることと、tsrcがソースタグであることとを確実にするために確認を行う。これは、tsetへのtsrcの追加を表す新しいCFI集合tunionを産生する。
ST R2→R17
R17はターゲット位置のアドレスを格納するレジスタであることがあり、R2は、上で述べられたように、許容可能なソース位置の現在の累積された和集合でタグ付けされたレジスタであることがある(たとえば、R2のタグは、そのアドレスがR17に格納されているターゲット位置のための許容可能なソース位置の集合を示す)。上のST命令は、制御移転のターゲット位置をタグ付けすることが許容される特別なものとして命令を示す、特別な命令タグCFI MARK TARGETでタグ付けされ得る(たとえば、ローダコードのこのSTORE命令1726は、1720の処理をルールに実行させるロードコード命令上の他のコードタグと同様の方式で、カーネルコードによってタグ付けされていることがある)。以下のSTルールは、1726のための上のSTORE命令の結果としてトリガされ得る。
ST: (-,CFI MARK TARGET,tset,-,codetag)→(-,tset)
これは、CI tagがCFI MARK TARGETでありターゲット(R17により指される、ここでR17はターゲットアドレスを含む)が命令を示すcodetagでタグ付けされているときにトリガされ、tsetのアノテーションをターゲットに置く。
セキュリティのためのハードウェアで支援されるマイクロポリシー
概要
広範なセキュリティポリシーが、ISAレベルでメタルールについてのルールとして策定され、プログラム可能なハードウェアにおいて効率的に実施され得る。主計算とともに、解釈されないメタデータに対するフレキシブルなルール評価をサポートする、メタデータ処理のためのプログラム可能ユニット(PUMP)アーキテクチャに基づいて、そのようなポリシーのためのプログラミングモデルを精緻化する。空間的および時間的なメモリ安全性、テイント追跡、制御フロー整合性、ならびにプリミティブの分類という4つの特定の領域において、様々な複雑さの安全性およびセキュリティポリシーの多様な集合を実装することによって、モデルの一般性を示す。単純なRISC ISAのためのこれらのポリシーの性能を、単独と組合せの両方で特徴付ける。大半のポリシーの平均のランタイムオーバーヘッドはわずか8%である。このことは、PUMPモデルがソフトウェア実施のフレキシビリティおよび適応性を専用ハードウェアの性能により実現できることを示している。
プログラムの意図を覆すことは攻撃者にとってとても簡単である。こうした現状において、実行する動作の意図される高水準のセマンティクスに対して作動するように設計されている現代のプロセッサは共犯であり、これはトランジスタが高価で主要な設計の目標がランタイム実行であった技術の時代の遺産である。コンピュータシステムが重大な仕事をますます任せられるにつれて、システムのセキュリティがついに重要な設計の目標になった。同時に、プロセッサは今や、中程度のシステムオンチップダイと比較しても小さく、セキュリティを増強するハードウェアによりそれらを拡張することは現実的であり安価である。管理するデータのプライバシーおよび整合性を未来のコンピュータが適切に保護するために、現代の脅威およびハードウェアのコストを考慮したセキュリティ機構とともにコンピューティングスタック全体を設計し直さなければならない。
PUMPポリシーは、タグ値の集合と、何らかの所望の追跡および実施機構を実装するためにこれらのタグを操作するルールの集合とで構成される。ルールには、システムのソフトウェア層について話しているか(シンボリックルール)、またはハードウェア層について話しているか(コンクリートルール)に応じて、2つの形式がある。
opgroup:(PC,CI,OP1,OP2,MR)→(PC',R')if guard?
これは、命令オペコードの集合(opgroup)と、プログラムカウンタ(PC)、現在の命令(CI)、レジスタファイルからの2つまでのオペランド(OP1、OP2)、および命令により参照されるメモリ位置(MR)がもしあれば、それらのメタデータタグとで、ルールが一致することを述べている。すべての関連するタグ表現が一致し、guard?が当てはまる場合、ルールが適用される。この場合、右手側は、PCのタグ(PC')および動作の結果のタグ(R')をどのように更新するかを判定する。大半のポリシーでは、同一のルールを伴う多数のオペコードがあるので、オペコードの代わりにオペグループを使用する。無視される入力または出力フィールドを示すために、「-」と書く(「ワイルドカード」)。guard?条件が単に真であるとき、省略する。
return: (⊥,-,-,-,-)→(check,-) (1)
return:(⊥,ci,-,-,-)→(ci,-) (1')
opgroup:(PC,CI,OP1,OP2,MR)⇒(PC',R')
ここで、入力および出力フィールドは固定されたタグである。ミスハンドラがあらゆるコンクリートルールをキャッシュに追加する前に対応する条件を確認するので、シンボリックルールフォーマットの「guard?」フィールドは必要ではないことに留意されたい。
load:(-,ci,op1,-,mr)→(-,ci∪op1∪mr)
何らかの瞬間において、(i)実行されるべき次の命令がld r0 r1でありそのタグがtciであり、レジスタr0がtpとタグ付けされたポインタpを格納し、アドレスpにおけるメモリがtφとタグ付けされた値を格納し、(ii)tciが集合{TA,TB}を表すデータ構造(たとえば、テイントidのアレイ)を指し、(iii)tpが{TC,TD}の表現を指し、(iv)tφが空集合を指すと仮定する。さらに、テイント{TA,TB,TC,TD}にこれまで遭遇したことがない、すなわち、ロードの結果をテイントするために使用すべき集合を表すデータ構造が現在、メモリの中にないと仮定する。この場合、ルールキャッシュルックアップはミスし、実行はルールミスハンドラへとフォルトし、ルールミスハンドラが適切なコンクリートルールを生成してそれをキャッシュにインストールし、場合によっては空間を作るために別のルールを除去する。このことは、新しいメモリ(たとえば、アドレスtnewにおける)を割り振ることと、{TA,TB,TC,TD}を表すようにそのメモリを初期化することとを必要とする。そうすると、生成されるコンクリートルールは、
load:(⊥,tci,tp,⊥,tφ)⇒(⊥,tnew)
である。命令が再開された後で、次のキャッシュルックアップが続き、r1の中のロードされた値はtnewとタグ付けされる。
store:(-,tmallocinit,t1,c2,F)→(-,(c2,t1))
ポリシーシステムは、各ユーザプロセス内のメモリの別個の領域として存在する。これは、ミスハンドラのためのコード、ポリシールール、およびポリシーのメタデータタグを表すデータ構造を含む。このポリシーシステムをプロセスにおいて位置付けることは、既存のUnix(登録商標)プロセスモデルに対して最小限に侵害的であり、ポリシーシステムとユーザコードとの間の軽量な切替えを容易にする。ポリシーシステムは、次に説明される機構を使用してユーザコードから隔離される。
このセクションでは、セキュリティ不変条件の多様な集合を実施するポリシーの4つの群を実装するためにどのようにPUMPを使用するかを示す。各群に対して、まず脅威モデルを概説する。次いで、脅威を軽減するポリシーおよび対応するルールを説明する。公開の脆弱性一式[10]からの例を使用して、各ポリシーがどのように典型的な悪用を捉えるかを示す。最も重要なことには、各ポリシーがシステムに課す負荷を説明する。文献からの類似するポリシーとの比較で終了する。
脅威モデル。データの誤解釈は、プロセッサを騙して意図されない動作を実行するようにするための一般的な方法である。ここで、敵のために実行されるコードがポインタとして任意のデータ値を使用すること、または命令としてワードを実行することを試みることができる、ある形態の低水準タイプの混乱が気がかりである。ランタイムにおいてデータが実行できないこと、およびコードが作成または変更できないことを、強制する(4.3章参照)。
nop: (-,insn,-,-,-)→(-,-) (5)
add: (-,insn,addr,other,-)→(-,addr) (6)
load: (-,insn,addr,-,t)→(-,t)if t/=insn (7)
store: (-,insn,t,addr,-)→(-,t)if t/=insn (8)
call:(-,insn,addr,-,-)→(-,retaddr) (9)
return:(-,insn,retaddr,-,-)→(-,-) (10)
脅威モデル。ポリシーの次のグループは、ヒープに割り振られたデータのメモリ安全性を対象とし、オブジェクトの境界を超えて参照すること(空間的な侵害)、領域が解放された後でポインタを通じて参照すること、または無効なポインタを解放すること(時間的な侵害)などの、プログラミングのエラーを攻撃者が悪用することを防ぐ。これは、ヒープスマッシングおよびポインタの偽造などの、典型的なヒープベースの攻撃を含む。ここで研究するポリシーは、ヒープに割り振られたデータのみを保護し、このデータについて、mallocおよびfreeへの呼出しがメモリ領域をどのようにセットアップし破壊するかを伝え、スタックの割振りまたはボックス化されていない構造体については扱わない。これらも原則として扱うことができ、何らかのコンパイラのサポートを仮定する([32]参照)。
load: (-,-,c1,-,(c2,t2))→(-,t2)if c1=c2 (11)
store: (-,-,t1,c2,(c3,t3))→(-,(c3,t1))if c2=c3 (12)
add:(-,-,c,⊥,-)→(-,c)
store:(-,tmallocinit,t1,c2,F)→(-,(c2,t1)) (14)
逆に、freeは、修飾されたstore命令を使用して、メモリ領域をfreeのリストに返す前に、その領域を割り振られていないものとして再タグ付けする。
store:(-,tfreeinit,t1,c2,(c3,t4))→(-,F) (15)
脅威モデル。このポリシーのグループは、コード再使用攻撃を対象とする。攻撃者は、データを実行できず、またコードのインジェクションもしくは変更もできないという標準的な仮定[2]を行う(この仮定を実施するために、合成されたポリシーについて4.5章で行ったように、4.1章からのプリミティブ型ポリシーを使用することができる)。代わりに、攻撃者は、悪意のある挙動を引き起こすために、既存のコードの断片(ガジェット)を一緒につなぐことを試みる。
indir: (-,{f},-,-,-)→({f},-) (16)
脅威モデル。このポリシーは、入力のサニタイゼーションを行わないプログラムに攻撃者が歪曲されたデータを入力し、意図されないまたは悪意のある挙動(たとえば、SQLまたはOSコマンドインジェクション)を呼び出すケースを扱う。
add: (-,ci,op1,op2,-)→(-,ci∪op1∪op2) (18)
load: (-,ci,op1,-,mr)→(-,ci∪op1∪mr) (19)
store: (-,ci,op1,op2,-)→(-,ci∪op1∪op2) (20)
これらのポリシーの各々は潜在的に有用であるが、一度に実施するポリシーを1つだけ選ばなければならない、たとえば、バッファオーバーフローの脆弱性に対する保護を行うか、またはコマンドインジェクションの脆弱性に対する保護を行うかの選択を行わなければならないとすれば残念である。そうではなく、通常は、複数のポリシーを合成することに由来する保護を望む。実際に、我々の個々のポリシーの一部は、完全な脅威から守るために相互の保護を必要とする(データを実行できないことと、コードを作成または変更できないこととを確実にするために、CFIはタイプ保護に依存する)。
ルールの総数は、ルールの局所性を完全には捉えず、その結果、実効的なワーキングセットのサイズを完全には捉えない。図7は、gccベンチマークに対する10億回の命令シミュレーション内の各々の100万回の命令シーケンス内で使用される固有のルールの数の累積分布関数(CDF)を示す。これは、フルのメモリ安全性(
我々は、このプログラミングモデルが他のポリシーのホストを符号化できると考えている。情報フロー制御(たとえば、[6,37,40,24,8])は、ここでは簡単なテイント追跡モデルよりリッチであるが、暗黙的なフローを追跡することは、RIFLE型のバイナリ変換[44]により、または、コンパイラからのある程度のサポートとともにPCタグを使用することにより、サポートされ得る。マイクロポリシーは、軽量なアクセス制御およびコンパートメント化をサポートすることができる[47]。偽造不可能なリソースを区別するためにタグが使用され得る[50]。固有の生成されたトークンが、データを検印して保証するための鍵として機能することができ、これを次いで強力な抽象化のために使用することができ、データが認証されたコード構成要素のみによって作成され破壊されることを保証する。マイクロポリシールールは、不変性および線形性などのデータ不変条件を強制することができる。マイクロポリシーは、データまたは将来のためのフル/エンプティビットなどの同期プリミティブに対するアウトオブバンドメタデータとして(たとえば、[5])、または、ロック状態でレース条件を検出するための状態として(たとえば、[38,52])、並列処理をサポートすることができる。システムアーキテクトは、1つ1つの行を検査することなく、または書き直すことなく、既存のコードに固有のマイクロポリシーを適用することができる。
我々の例示的なポリシーに関する研究が、4章で触れられている。ここで、ハードウェアタグの確認および伝播に、より全般的に関連する研究を論じる。下で述べられる少数の例外を除き、従来の成果の研究は、ハードワイヤリングされた、または大きく制約されたポリシーを伴う、タグビットの小さな集合を使用する(図2参照)。初期のテイントハードウェアは、各ワードに添付された単一のテイントビットを、ハードワイヤリングされたテイント伝播論理とともにサポートしていた。より後のシステムには、複数の独立なテイントタグ(たとえば、[18])、複数のビットタグ(たとえば、[45])、およびよりフレキシブルなポリシー(たとえば、[19])を扱うための能力が加わった。一度に2つ以上のポリシーをサポートするための唯一の設計であるRakshaは、最大で4つのテイント追跡ポリシーをサポートしていた[18]。
PUMP設計は、フレキシビリティと性能の魅力的な組合せを実現し、多くの場合において専用の機構に匹敵する単一ポリシーの性能を伴う低水準で細粒度のセキュリティポリシーの多様な集合体をサポートしながら、ルールの複雑さが増すときに性能の概ねグレイスフルデグラデーションとともによりリッチな合成ポリシーをサポートする。この設計空間をより完全に理解するために、いくつかの問題にはさらなる調査が必要である。まず、実行中のハードウェア実装形態があるとき、PUMPハードウェアおよび低水準ソフトウェアを、ホストオペレーティングシステムおよびソフトウェアツールチェーン(たとえば、コンパイラ、リンカ、およびローダ)に統合する必要がある。第2に、PUMPにより提供される機構が、その固有のソフトウェア構造を保護するために使用され得るかどうか思案している。我々は、PUMPを使用して「コンパートメント化」マイクロポリシーを実装し、これを使用してミスハンドラコードを保護することによって、特別なミスハンドラ動作モードを置き換えることができると考えている。最後に、各々により提供される保護が他者とは完全に独立である、ポリシーの直交する集合を合成することは簡単であることがここでわかった。しかし、ポリシーはしばしば相互作用する。たとえば、情報フローポリシーは、メモリ安全性ポリシーにより割り振られる未使用の領域にタグを付ける必要があり得る。ポリシー合成は、表現と効率的なハードウェアサポートの両方において、さらなる研究が必要である。
8.1 プリミティブ型
nop,ubranch:(-,insn,-,-,-)→(-,-) (1)
ar2s1d:(-,insn,other,other,-)→(-,other) (2)
ar2s1d:(-,insn,addr,other,-)→(-,addr) (3)
ar2s1d:(-,insn,other,addr,-)→(-,addr) (4)
ar2s1d:(-,insn,addr,addr,-)→(-,other) (5)
ar1s1d:(-,insn,other,-,-)→(-,other) (6)
ar1s1d:(-,insn,addr,-,-)→(-,addr) (7)
ar1d,flags:(-,insn,-,-,-)→(-,other) (8)
cbranch:(-,insn,other,other,-)→(-,-) (9)
ijump,return:(-,insn,addr,-,-)→(-,-) (10)
dcall,icall:(-,insn,addr,-,-)→(-,addr) (11)
load:(-,insn,addr,-,t)→(-,t)if t≠insn (12)
store:(-,insn,t,addr,-)→(-,t)if t≠insn (13)
move:(-,insn,other,-,-)→(-,other) (14)
move:(-,insn,addr,-,-)→(-,addr) (15)
リターンアドレスを確認するための代替的なルール
ijump:(-,insn,addr,-,-)→(-,-) (10)
return:(-,insn,retaddr,-,-)→(-,-) (10)
dcall, icall:(-,insn,addr,-,-)→(-,retaddr) (11)
フルのメモリ安全性に対するN=264-kを用いたN-色付け。色をcと書き、ヒープへのポインタをタグ付けするためにそれらを使用する。色とは異なる特別なタグ⊥を仮定し、これは、ヒープへのポインタではないすべてのデータをタグ付けするために使用される。レジスタのタグは色または⊥(tと書かれる)である。メモリのタグは、色と色か⊥のいずれかとのペア((c1,t2)と書かれる)またはF(割り振られていない)である。ヒープは最初はすべてFとタグ付けされる。最後に、命令のタグが集合{tmalloc,tmallocinit,tfreeinit,tsomething else}から導かれる。
nop,cbranch,ubranch,ijump,return:(-,-,-,-,-)→(-,-) (1)
ar2s1d:(-,-,⊥,⊥,-)→(-,⊥) (2)
ar2s1d:(-,-,c,⊥,-)→(-,c) (3)
ar2s1d:(-,-,⊥,c,-)→(-,c) (4)
ar2s1d:(-,-,c,c,-)→(-,⊥) (5)
ar1s1d:(-,-,t,-,-)→(-,t) (6)
ar1d,dcall,icall,flags:(-,-,-,-,-)→(-,⊥) (7)
load:(-,-,c1,-,(c2,t2))→(-,t2)if c1=c2 (8)
store:(-,ci,t1,c2,(c3,t3))
→(-,(c3,t1))if c2=c3Λci/∈{tmallocinit,tfreeinit} (9)
store:(-,tmallocinit,t1,c2,F)→(-,(c2,t1)) (10)
store:(-,tfreeinit,t1,c2,(c3,t4))→(-,F) (11)
malloc(int size){
void *p=primitive_malloc(size);//元のポインタ
void *tp;//タグ付けされたポインタ
void *tmp;//個々のワードへのタグ付けされたポインタ
asm:malloc move r1 =p, r2=tp//未使用のタグの割振り
tmp=tp;
for(int i=0;i<size;i++){
//新しい領域asm mallocinitの中のワードに領域タグを設定する
store r1 =0,r2=tmp
tmp++;
}
return(tp);
}
primitive_free=free;
free(void*p){
size=size(p);//ポインタ領域のサイズ
void*tmp=base(p);//ポインタ領域のベース
for(int i=0;i<size;i++){
//解放された領域の中のワードに領域タグを設定する
asm freeinit store r1=0,r2=tmp
tmp++;
}
return;
}
8.3.1 CFI-1ID[2]
集合φおよび{f}と書かれる2つのタグを使用する。タグ{f}は、すべての間接的な制御フロー、ならびにそれらのすべての潜在的な宛先をタグ付けするために使用される。タグφは他のすべてのもののために使用される。
return,ijump,icall:(-,{f},-,-,-)→({f},-) (1)
このポリシーでは、rはリターンおよびそれらの潜在的なターゲットをマークするために使用され、cは間接的な呼出しおよびジャンプならびにそれらの潜在的なターゲットのために使用される。これらの2つのケースは重複することがあるので、集合:φ、{r}、{c}、および{r,c}と書かれる4つのタグを使用している。
return:(pc,ci,-,-,-)→({r},-)if r∈ci,pc⊆ci (1)
ijump,icall:(pc,ci,-,-,-)→({c},-)if c∈ci,pc⊆ci (2)
rはreturn-idであり、cはcall-idであり、pはreturn-into-privileged-code-idである。集合:φ、{r}、{p}、{c}、{r,c}、および{p,c}と書かれる6つのタグを仮定する。
return:(pc,ci,-,-,-)→({r},-)if r∈ci,pc⊆ci (1)
return:(pc,ci,-,-,-)→({p},-)if p∈ci,pc⊆ci (2)
ijump,icall:(pc,ci,-,-,-)→({c},-)if c∈ci,pc⊆ci (3)
リターンIDおよび潜在的な宛先IDのペアを含む、許容される制御フローグラフXを仮定する。以下ではIDをciまたはpcと書く。タグは有効なIDまたは⊥のいずれかである。
return: (⊥,ci,-,-,-)→(ci,-) (1')
許容される制御フローグラフXを仮定すると、
ijump,icall: (⊥,ci,-,-,-)→(ci,-) (1)
ijump,icall: (pc,ci,-,-,-)→(ci,-)if(pc,ci)∈X (2)
許容される制御フローグラフXを仮定する。
return,ijump,icall: (⊥,ci,-,-,-)→(ci,-) (1)
return,ijump,icall: (pc,ci,-,-,-)→(ci,-)if(pc,ci)∈X (2)
nop,cbranch,ubranch,ijump,return:(-,-,-,-,-)→(-,-) (1)
ar2s1d:(-,ci,op1,op2,-)→(-,ci∪op1∪op2) (2)
ar1s1d:(-,ci,op1,-,-)→(-,ci∪op1) (3)
ar1d,dcall,icall,flags:(-,ci,-,-,-)→(-,ci) (4)
load:(-,ci,op1,-,mr)→(-,ci∪op1∪mr) (5)
store:(-,ci,op1,op2,-)→(-,ci∪op1∪op2) (6)
我々の実験で使用した上のルールは、サブワード操作を考慮していない。サブワード操作を適切にサポートするには、loadオペグループおよびstoreオペグループを、ワード操作のための2つのオペグループ(wloadおよびwstore)とバイト操作のための2つのオペグループ(bloadおよびbstore)に分解する必要がある。
wload: (-,insn,addr,-,other)→(-,other) (1)
wload: (-,insn,addr,-,addr)→(-,addr) (2)
wstore: (-,insn,other,addr,-)→(-,other) (3)
wstore: (-,insn,addr,addr,-)→(-,addr) (4)
bload: (-,insn,addr,-,other)→(-,other) (5)
bload: (-,insn,addr,-,addr)→(-,other) (6)
bstore: (-,insn,other,addr,-)→(-,other) (7)
bstore: (-,insn,addr,addr,-)→(-,other) (8)
bstore: (-,ci,op1,op2,mr)→(-,ci∪op1∪op2∪mr) (1)
12 RISCプロセッサ
14 フェッチ段階
16 復号段階
18 実行段階
20 メモリ段階
22 ライトバック段階
24 Alpha ISA
26 命令トレース
28 PUMPシミュレータ
30 アドレストレース
31 アドレス追跡シミュレータ
104 レベル1
106 レベル2
108 レベル3
110 レベル4
122 単一のノード
132 要素
152 レベル1キャッシュ
154 レベル2キャッシュ
156 レベル3キャッシュ
158 レベル4キャッシュ
142 要素
201 要素
202 タグ
204 命令
205 命令ワード
221 ポインタ
222 メモリ位置
223 要素
224 メモリ位置
231 fooルーチン
232 ソース位置
233 ルーチンbar
234 ターゲット位置
242 タグ
243 要素
245 フィールド
246 要素
247 リスト構造
248 要素
251 要素
252 要素
254 要素
256 要素
262 タグ
265 ワード
272 ルートノード
274 ノード
276 ノード
278 ノード
281 ルートノード
266 構造
402 要素
404 要素
421 オペコード
422 オペコードマッピングテーブル
424 出力
431 タグ
432 物理ページ
434 アドレス空間
436 アドレス空間
502 ルーチンfoo
504 ルーチンbar
506 ルーチンbaz
522 スタックフレーム
524 スタックフレーム
526 スタックフレーム
532 領域
533 タグ
534 領域
536 領域
538 領域
540 要素
562 ルーチンmain
563 ルーチンFirst
564 ルーチンSecond
572 要素
581 要素
604 学習されたルールの第1の集合
606 ルール検証処理
608 検証されたルールの第2の集合
701 他のタグ付けされていないメモリソース
702 RISC-V CPU
704 PUMP
706 L1データキャッシュ
708 L1命令キャッシュ
710 インターコネクトファブリック
712a ブートROM
712b DRAM制御
712c 外部DRAM
714a 追加タグ
714b 検証ドロップタグ
715 インターコネクトファブリック
716 タグ付けされていないメモリ
732 RISC-V CPU
732a データキャッシュ
732b 命令キャッシュ
742 インターン
744 エクスターン
802 PUMP
804 PUMP入力
805a R tag
805b PCnew tag
805c 予測されるMR tag
805d R tag
805e PCnew tag
808 段階6
822 MR tag予測PUMP
828 要素
829 要素
850 要素
852 要素
900 表
901 行
902 列
904 列
906 列
908 列
910 表
911 行
912 列
914 列
916 列
1001 要素
1002 サブシステム
1002a タグ
1002b データ
1003 PUMP
1004 メタデータ処理サブシステム
1006a メモリ
1006b I-ストア
1006c レジスタファイル
1006d ALU
1007 PUMP入力
1008a メモリ
1008b I-ストア
1008c レジスタファイル
1008d ALU
1008e PC
1012 PUMP入力
1014 PUMP出力
1016 PUMP入力
1018 PUMP出力
1022 入力
1024 出力
1026 入力
1028 出力
1031 PUMP制御
1032 マスキング
1034 ハッシュ
1036 ルールキャッシュルックアップ
1038 出力タグ選択
1041a PC new tag
1041b PC tag
1042 セレクタ
1043 マルチプレクサ
1044 セレクタ
1045a R tag
1045b 他の入力
1047 R tag
1049 要素
1051 Op1data
1052 要素
1053 Rdata
1054 出力
1055 出力
1056 要素
1061 Mtag
1062 タグ値
1063a Iキャッシュ
1063b Dキャッシュ
1064 PUMPハッシュ
1066 PUMPルールキャッシュ
1068 要素
1102a 要素
1102b メモリブロック
1104a 要素
1104b メモリブロック
1106a 要素
1106b メモリブロック
1111 要素
1112 要素
1113 要素
1114 要素
1116 要素
1212 メタデータ処理
1214 出力
1221a 論理的な結果
1222 PUMP
1225 マルチプレクサ
1228 ポインタ
1302 PUMPルールキャッシュ
1304 ハードウェアルールキャッシュミスハンドラ
1312 入力
1314 HWルールキャッシュミスハンドラ
1316 出力
1318 合成結果
1402 命令
1404 命令
1502 I/O PUMP
1504a イーサネット(登録商標)DMAデバイスA
1504b イーサネット(登録商標)DMAデバイスB
1504c UARTまたはシリアルデバイス
1524 アドレス列
1526 名前列
1528 説明列
1531 無効な要求
1532 信頼されるファブリック
1534a I/O PUMP
1534b デバイスタグ
1534c トラストブリッジ
1535 要素
1536 信頼されないファブリック
1537 CSR
1538 要素
1541a 要求受信段階
1541b メモリフェッチ段階
1541c 検証段階
1541d ライトバック段階
1542 要素
1543 要素
1544 要素
1545 IOPUMP
1546 要素
1548 要素
1621 boottag
1622 OS特別命令タグ
1624 異なるコード部分
1625 ユーザモード
1626 mallocタグ生成源アプリケーションタグ
1627 要素
1628 要素
1629 アプリケーション色シーケンス
1630 無限のシーケンス
1631 無限のシーケンス
1701 要素
1702 要素
1704 要素
1706 集合
Claims (100)
- 命令を処理する方法であって、
メタデータ処理のために、関連するメタデータタグとともに現在の命令を受信するステップであって、前記メタデータ処理が前記現在の命令を含むコード実行領域から隔離されたメタデータ処理領域において実行される、ステップと、
前記メタデータ処理領域において、かつ前記メタデータタグおよび前記現在の命令に従って、前記現在の命令のためのルールキャッシュにルールが存在するかどうかを判定するステップであって、前記ルールキャッシュが、許容される動作を定義するために前記メタデータ処理により使用されるメタデータについてのルールを含む、ステップと、
前記現在の命令のための前記ルールキャッシュにルールが存在しないと判定したことに応答して、前記メタデータ処理領域においてルールキャッシュミス処理を実行するステップであって、
前記現在の命令の実行が許容されるかどうかを判定するステップと、
前記現在の命令が前記コード実行領域において実行されることが許容されると判定したことに応答して、前記現在の命令のための新しいルールを生成するステップと、
レジスタに書き込むステップと、
前記レジスタへの書込みに応答して、前記新しいルールを前記ルールキャッシュに挿入するステップと
を備える、ステップとを備える、方法。 - 前記現在の命令のための前記ルールを選択するために使用される第1のメタデータが、前記メタデータ処理により使用される複数の制御ステータスレジスタの第1の部分に記憶され、前記複数の制御ステータスレジスタの前記第1の部分が、前記現在の命令のための複数のメタデータタグを前記メタデータ処理領域に伝えるために使用され、前記複数のメタデータタグが前記メタデータ処理領域においてデータとして使用される、請求項1に記載の方法。
- 前記レジスタが、前記メタデータ処理により使用される前記複数の制御ステータスレジスタの第1の制御ステータスレジスタであり、前記複数の制御ステータスレジスタの前記第1の部分が、前記メタデータ処理領域から前記ルールキャッシュに前記複数のメタデータタグを伝えるために使用される、請求項2に記載の方法。
- 前記複数のメタデータタグが前記現在の命令のためのものである、請求項3に記載の方法。
- 別のメタデータタグを前記第1の制御ステータスレジスタに書き込んだことに応答して、前記新しいルールが前記ルールキャッシュへと挿入され、前記別のメタデータタグが前記現在の命令の結果に付けられ、前記結果が宛先レジスタまたはメモリ位置のいずれかである、請求項4に記載の方法。
- 前記複数の制御ステータスレジスタが、
すべての他の生成されるメタデータタグがそこから導出される初期メタデータタグを含む、ブートストラップタグ制御ステータスレジスタと、
デフォルトメタデータタグを指定するデフォルトタグ制御ステータスレジスタと、
公開であり信頼されないものとして分類される命令およびデータをタグ付けするために使用される公開信頼不可メタデータタグを指定する、公開信頼不可制御ステータスレジスタと、
オペグループについての情報と様々なオペコードのためのケア情報とを含むテーブルに書き込まれるデータを含む、オペグループ値制御ステータスレジスタと、
前記オペグループ値制御ステータスレジスタのデータが書き込まれる前記テーブルの中の位置を指定する、オペグループアドレス制御ステータスレジスタと、
pumpフラッシュ制御ステータスレジスタであって、前記pumpフラッシュ制御ステータスレジスタへの書込みが前記ルールキャッシュのフラッシュをトリガする、pumpフラッシュ制御ステータスレジスタと
のうちの任意の1つまたは複数を含む、請求項2に記載の方法。 - 前記複数の制御ステータスレジスタが、メタデータ処理の現在のモードを示すタグモード制御ステータスレジスタを含む、請求項2に記載の方法。
- 前記タグモード制御ステータスレジスタが、メタデータ処理がいつ不関与であり、それにより、1つまたは複数の定義されたポリシーのルールがメタデータ処理によって実施されないかを示す、請求項7に記載の方法。
- 前記タグモード制御ステータスレジスタが、メタデータ処理の前記現在のモードを示すために許容される状態の定義された集合のうちの1つに設定され、前記許容される状態が、メタデータ処理がすべての結果にデフォルトタグを書き込むオフ状態と、命令が1つまたは複数の指定された特権レベルで前記コード領域において実行されるときにメタデータ処理が関与しており動作可能であることを示す状態とを含む、請求項8に記載の方法。
- 前記ルールキャッシュミス処理が、メタデータ処理が不関与である許容される状態の前記定義された集合のうちの第1の状態において実行される、請求項9に記載の方法。
- 前記許容される状態が、命令がユーザ特権レベルで前記コード領域において実行するときにのみメタデータ処理が関与していることを示す第1の状態と、命令がユーザ特権レベルまたはスーパーバイザー特権レベルで前記コード領域において実行するときにのみメタデータ処理が関与していることを示す第2の状態と、命令がユーザ特権レベル、スーパーバイザー特権レベル、またはハイパーバイザー特権レベルで前記コード領域において実行するときにのみメタデータ処理が関与していることを示す第3の状態と、命令がユーザ特権レベル、スーパーバイザー特権レベル、ハイパーバイザー特権レベル、またはマシン特権レベルで前記コード領域において実行するときにのみメタデータ処理が関与していることを示す第4の状態とを含む、請求項9に記載の方法。
- 前記メタデータ処理が関与しているか不関与であるかが、前記タグモード制御ステータスレジスタの現在のタグモードと、前記コード領域において実行するコードの現在の特権レベルとの組合せに従って判定され、メタデータ処理が不関与であるときに1つまたは複数の定義されるポリシーのルールが実施されず、メタデータ処理が関与しているときに前記ルールが実施される、請求項7に記載の方法。
- テーブルが、命令セットのオペコードを対応するオペグループおよびビットベクトル情報にマッピングする情報を含み、前記オペグループが、前記メタデータ処理領域によって同様に扱われる関連するオペコードのグループを示し、前記ビットベクトル情報が、前記メタデータ処理領域に関する特定の入力および出力が前記オペコードを処理することに関連して使用されるかどうかを示し、前記テーブルが、許容可能なオペコードビットの最大の数より少ないオペコードビットの第1の部分を使用してインデクシングされ、前記最大の数が前記命令セットのオペコードのビットの数の上限を示す、請求項2に記載の方法。
- 前記複数の制御ステータスレジスタの前記第1の部分が、前記現在の命令のための追加のオペコードビットがもしあればそれを含む、拡張オペコード制御ステータスレジスタを含み、前記現在の命令が可変長オペコードを有する前記命令セットに含まれ、前記命令セットの各オペコードが、任意選択で前記追加のオペコードビットを含み、前記拡張オペコード制御ステータスレジスタが、前記現在の命令のための前記追加のオペコードビットがもしあればそれを含む、請求項13に記載の方法。
- 前記テーブルを使用してマッピングされる各オペコードに対して、前記各オペコードに対応する結果ビットベクトルがあり、前記結果ビットベクトルが、もしあれば、前記拡張オペコード制御ステータスレジスタの中の前記追加のオペコードビットのどの部分がメタデータ処理のために前記各オペコードとともに使用されるかを示す、請求項14に記載の方法。
- 前記現在の命令が、単一のメタデータタグと関連付けられるメモリの単一のワードに記憶される複数の命令のうちの1つであり、前記単一のメタデータタグが、前記単一のワードに含まれる前記複数の命令と関連付けられる、請求項2に記載の方法。
- 前記複数の制御ステータスレジスタが、前記単一のワードに記憶されている前記複数の命令のいずれが前記現在の命令であるかを示す、サブ命令制御ステータスレジスタを含む、請求項16に記載の方法。
- 前記単一のメタデータタグが、前記単一のワードの中の前記複数の命令の各々に対する異なるメタデータタグを含む第1のメモリ位置への第1のポインタである、請求項17に記載の方法。
- 前記複数の命令のうちの第1の命令のための前記第1のメモリ位置に記憶されている少なくとも第1のメタデータタグが、前記第1の命令のためのメタデータタグ情報を含む第2のメモリ位置への第2のポインタを含む、請求項18に記載の方法。
- 前記第1の命令のための前記メタデータタグ情報が複雑な構造を含み、前記複雑な構造が、少なくとも1つのスカラーデータフィールドと、第3のメモリ位置への少なくとも1つのポインタフィールドとを備える、請求項19に記載の方法。
- 実行されると、命令を処理する方法を実行するコードを備える非一時的コンピュータ可読媒体であって、前記方法が、
メタデータ処理のために、関連するメタデータタグとともに現在の命令を受信するステップであって、前記メタデータ処理が前記現在の命令を含むコード実行領域から隔離されたメタデータ処理領域において実行される、ステップと、
前記メタデータ処理領域において、かつ前記メタデータタグおよび前記現在の命令に従って、前記現在の命令のためのルールキャッシュにルールが存在するかどうかを判定するステップであって、前記ルールキャッシュが、許容される動作を定義するために前記メタデータ処理により使用されるメタデータについてのルールを含む、ステップと、
前記現在の命令のための前記ルールキャッシュにルールが存在しないと判定したことに応答して、前記メタデータ処理領域においてルールキャッシュミス処理を実行するステップであって、
前記現在の命令の実行が許容されるかどうかを判定するステップと、
前記現在の命令が前記コード実行領域において実行されることが許容されると判定したことに応答して、前記現在の命令のための新しいルールを生成するステップと、
レジスタに書き込むステップと、
前記レジスタへの書込みに応答して、前記新しいルールを前記ルールキャッシュに挿入するステップと
を備える、ステップとを備える、非一時的コンピュータ可読媒体。 - プロセッサと、
前記プロセッサによって実行されると、命令を処理する方法を実行するコードを記憶したメモリとを備え、前記方法が、
メタデータ処理のために、関連するメタデータタグとともに現在の命令を受信するステップであって、前記メタデータ処理が前記現在の命令を含むコード実行領域から隔離されたメタデータ処理領域において実行される、ステップと、
前記メタデータ処理領域において、かつ前記メタデータタグおよび前記現在の命令に従って、前記現在の命令のためのルールキャッシュにルールが存在するかどうかを判定するステップであって、前記ルールキャッシュが、許容される動作を定義するために前記メタデータ処理により使用されるメタデータについてのルールを含む、ステップと、
前記現在の命令のための前記ルールキャッシュにルールが存在しないと判定したことに応答して、前記メタデータ処理領域においてルールキャッシュミス処理を実行するステップであって、
前記現在の命令の実行が許容されるかどうかを判定するステップと、
前記現在の命令が前記コード実行領域において実行されることが許容されると判定したことに応答して、前記現在の命令のための新しいルールを生成するステップと、
レジスタに書き込むステップと、
前記レジスタへの書込みに応答して、前記新しいルールを前記ルールキャッシュに挿入するステップと
を備える、ステップとを備える、システム。 - 前記プロセッサが、縮小命令セットコンピューティングアーキテクチャにおけるパイプラインプロセッサである、請求項22に記載のシステム。
- 命令を処理する方法であって、
現在の命令を含むコード実行領域から隔離されたメタデータ処理領域において実行されるメタデータ処理のための前記現在の命令を受信するステップと、
前記現在の命令のためのメタデータに関連して前記メタデータ処理領域によって、1つまたは複数のポリシーの集合に従った前記現在の命令の実行を許容するかどうかを判定するステップとを備え、前記現在の命令が第1のルーチンのスタックフレームの第1の位置にアクセスし、前記現在の命令および前記スタックフレームの位置が関連するメタデータタグを有し、1つまたは複数のポリシーの前記集合が、スタック保護を提供し前記第1のルーチンの前記スタックフレームの記憶位置を含むスタック記憶位置への不適切なアクセスを防ぐ、スタック保護ポリシーを含む、方法。 - 前記スタック保護ポリシーが、前記第1のルーチンの前記スタックフレームの前記第1の位置にアクセスする前記現在の命令の前記メタデータ処理において使用される第1のルールを含み、前記第1のルールが、前記第1の位置が前記第1のルーチンのスタック位置であることを示すメタデータを前記第1の位置が有し、前記現在の命令が前記第1のルーチンに含まれる場合、前記現在の命令の実行を許容する、請求項24に記載の方法。
- 前記現在の命令が前記第1のルーチンの特定の呼出しインスタンスによって使用され、前記スタック保護ポリシーが前記現在の命令の前記メタデータ処理において使用される第1のルールを含み、前記第1のルールが、前記現在の命令が前記第1のルーチンに含まれ前記第1のルーチンの前記特定の呼出しインスタンスによっても使用される場合、前記現在の命令の実行を許容する、請求項24に記載の方法。
- 前記第1のルールが、前記第1のルーチンの前記特定の呼出しインスタンスによる前記現在の命令の実行を許容するかどうかを判定するために、プログラムカウンタと関連付けられるとともに権限および能力のいずれかを示すメタデータを調査することを含む、請求項26に記載の方法。
- 前記スタック保護ポリシーがオブジェクトレベル保護のいずれかを提供し、単一のスタックフレームの中の異なるオブジェクトが異なる色メタデータタグを有し、階層的なオブジェクトのための階層的なオブジェクト保護が複数のサブオブジェクトを含み、単一のスタックフレームの前記複数のサブオブジェクトの各々が異なるメタデータタグを有する、請求項24に記載の方法。
- 新しいルーチン呼出しのための新しいスタックフレームを作成するステップと、
厳密なオブジェクト初期化または遅延オブジェクト色付けに従って前記新しいスタックフレームのメモリ位置をタグ付けまたは色付けするステップとをさらに備え、厳密なオブジェクト初期化が、前記新しいスタックフレームに情報を記憶する前に前記新しいスタックフレームの各メモリ位置を最初にタグ付けする1つまたは複数のルールのメタデータ処理をトリガする1つまたは複数の命令を実行する初期化処理を実行することを含み、遅延オブジェクト色付けが、前記特定のメモリ位置にデータを記憶する命令に応答してトリガされるルールのメタデータ処理に関連して前記新しいスタックフレームの特定のメモリ位置をタグ付けする、請求項24に記載の方法。 - 前記1つまたは複数のポリシーが、特定のリターン位置へのリターンが特定の呼出しに続いて行われるときにのみ有効であることを保証する、動的制御フロー整合性ポリシーの実施のためのルールの集合を含む、請求項24に記載の方法。
- 第1の位置が、リターン命令を含む呼び出されたルーチンに制御を移転する呼出し命令を含み、第2の位置が第2の命令を含み、前記第2の位置が、前記呼び出されたルーチンの前記リターン命令を実行した結果として制御が移転されるリターンターゲット位置を示し、
前記呼出し命令を含む前記第1の位置を第1のコードタグでタグ付けするステップと、
前記リターンターゲット位置を示す前記第2の位置を第2のコードタグでタグ付けするステップと、
前記第1のコードタグでタグ付けされた前記呼出し命令のために前記集合の第1のルールのメタデータ処理を実行するステップであって、前記第1のコードタグでタグ付けされた前記呼出し命令のための前記第1のルールの前記メタデータ処理が、リターンアドレスレジスタが前記第2の位置のための有効なリターンアドレスを含むことを示す有効なリターンアドレスタグで前記リターンアドレスレジスタをタグ付けすることを含み、前記呼出し命令の実行が前記第2の位置に戻る能力を示すように前記リターンアドレスレジスタの前記タグを更新する、ステップと、
前記リターンアドレスレジスタが前記有効なリターンアドレス能力タグでタグ付けされる場合に、前記リターンアドレスレジスタに記憶されているリターンアドレスへ制御を移転するために前記リターン命令の実行を許容する、前記呼び出されたルーチンの前記リターン命令のための前記集合の第2のルールのメタデータ処理を実行するステップであって、前記第2のルールが、前記リターン命令のランタイム実行に続く次の命令のために使用されるプログラムカウンタタグに、前記リターンアドレスレジスタの前記有効なリターンアドレス能力タグを伝播する、ステップと、
前記リターン命令のランタイム実行に続く前記第2の命令のための前記集合の第3のルールのメタデータ処理を実行するステップであって、前記第2の命令が前記第2のコードタグに等しいコードタグを有し、かつ、前記プログラムカウンタタグが前記有効なリターンアドレス能力タグである場合に、前記第3のルールの前記メタデータ処理が前記第2の命令の実行を許容し、前記第3のルールが、前記第2の命令のランタイム実行に続く次の命令のために使用される前記プログラムカウンタタグをクリアする、ステップとをさらに備える、請求項30に記載の方法。 - 命令を処理する方法であって、
現在の命令を含むコード実行領域から隔離されたメタデータ処理領域において実行されるメタデータ処理のための前記現在の命令を受信するステップと、
前記現在の命令のためのメタデータに関連して前記メタデータ処理領域によって、1つまたは複数のポリシーの集合に従った前記現在の命令の実行を許容するかどうかを判定するステップとを備え、前記1つまたは複数のポリシーが、命令の完全なシーケンスの実行を、前記完全なシーケンスの最初の命令から前記完全なシーケンスの最後の命令まで指定された順序で実施する、ルールの集合を含む、方法。 - 第1の共有される物理ページを第1のプロセスの第1の仮想アドレス空間にマッピングするステップと、
前記第1の共有される物理ページを第2のプロセスのための第2の仮想アドレス空間にマッピングするステップとをさらに備え、前記第1の共有される物理ページが複数のメモリ位置を含み、前記複数のメモリ位置の各々が、前記メタデータ処理領域におけるルール処理に関連して使用される複数のグローバルメタデータタグのうちの1つと関連付けられる、請求項32に記載の方法。 - 前記複数のグローバルメタデータタグが、少なくとも前記第1のプロセスおよび前記第2のプロセスを含む複数のプロセスによって共有されるメタデータタグの集合を示し、前記第1のプロセスと前記第2のプロセスの両方のために同じポリシーが前記メタデータ処理領域によって実施される、請求項33に記載の方法。
- 前記メタデータ処理領域による前記同じポリシーの実施が、そうされなければ前記第2のプロセスのための前記同じポリシーにより許容されない動作を前記第1のプロセスが実行することを許容するためにメタデータを使用し、プログラムカウンタが関連するプログラムカウンタタグを有し、前記関連するプログラムカウンタタグの異なる値が、そうされなければ前記第2のプロセスのための前記同じポリシーにより許容されない前記動作を前記第1のプロセスが実行することを許容するために、前記同じポリシーのルールによって使用される、請求項34に記載の方法。
- アプリケーションの割振りルーチンにより第1の処理を実行して、前記アプリケーションの現在の色を使用して前記アプリケーションの次の色を生成するステップをさらに備え、前記アプリケーションの前記現在の色が、前記アプリケーションのアプリケーション固有の色シーケンスの現在の状態を示し、前記次の色が、前記アプリケーションの前記アプリケーション固有の色シーケンスの次の状態を示し、前記現在の色が第1のアトムの第1のメタデータタグに記憶される、請求項32に記載の方法。
- 前記第1の処理が、
第1の1つまたは複数の命令を実行することを備え、前記第1の1つまたは複数の命令が、前記メタデータ処理領域による1つまたは複数のルールを使用したメタデータ処理をトリガし、前記メタデータ処理領域による前記1つまたは複数のルールを使用したメタデータ処理が、前記現在の色を使用して前記次の色を生成し、前記第1のアトムの前記第1のメタデータタグに前記次の色を記憶することによって前記アプリケーションの前記アプリケーション固有の色シーケンスの前記現在の状態を更新する、請求項36に記載の方法。 - 前記第1の1つまたは複数の命令が前記アプリケーションの前記割振りルーチンに含まれ、前記第1のアトムがレジスタおよびメモリ位置のいずれかであり、前記アプリケーション固有の色シーケンスが前記アプリケーションによる使用が可能な異なる色の無限のシーケンスであり、前記次の色が前記アプリケーションにより使用される1つまたは複数のメモリ位置の各々のタグ値として記憶され、前記1つまたは複数のメモリ位置が前記割振りルーチンによって割り振られる、請求項37に記載の方法。
- ルールの前記集合が第1のルールおよび第2のルールを含み、命令の前記完全なシーケンスが第1の命令および第2の命令を含み、前記第2の命令が前記第1の命令の直後に実行され、
前記第1の命令のための前記第1のルールのメタデータ処理を実行するステップであって、前記第1のルールの前記メタデータ処理が、前記第1の命令のランタイム実行に続く次の命令のために使用されるプログラムカウンタのプログラムカウンタタグを特別なタグ値に設定することを含む、ステップと、
前記第2の命令のための前記第2のルールのメタデータ処理を実行するステップであって、前記第2のルールの前記メタデータ処理が、前記第2の命令のための前記プログラムカウンタの前記プログラムカウンタタグが前記特別なタグに等しいときにのみ前記第2の命令の実行が許容されることを保証することを含む、ステップとを含む、請求項32に記載の方法。 - 実行されると、命令を処理する方法を実行するコードを記憶した非一時的コンピュータ可読媒体であって、前記方法が、
現在の命令を含むコード実行領域から隔離されたメタデータ処理領域において実行されるメタデータ処理のための前記現在の命令を受信するステップと、
前記現在の命令のためのメタデータに関連して前記メタデータ処理領域によって、1つまたは複数のポリシーの集合に従った前記現在の命令の実行を許容するかどうかを判定するステップとを備え、前記現在の命令が第1のルーチンのスタックフレームの第1の位置にアクセスし、前記現在の命令および前記スタックフレームの位置が関連するメタデータタグを有し、1つまたは複数のポリシーの前記集合が、スタック保護を提供し前記第1のルーチンの前記スタックフレームの記憶位置を含むスタック記憶位置への不適切なアクセスを防ぐ、スタック保護ポリシーを含む、非一時的コンピュータ可読媒体。 - プロセッサと、
前記プロセッサによって実行されると、命令を処理する方法を実行するコードを記憶したメモリとを備え、前記方法が、
現在の命令を含むコード実行領域から隔離されたメタデータ処理領域において実行されるメタデータ処理のための前記現在の命令を受信するステップと、
前記現在の命令のためのメタデータに関連して前記メタデータ処理領域によって、1つまたは複数のポリシーの集合に従った前記現在の命令の実行を許容するかどうかを判定するステップとを備え、前記現在の命令が第1のルーチンのスタックフレームの第1の位置にアクセスし、前記現在の命令および前記スタックフレームの位置が関連するメタデータタグを有し、1つまたは複数のポリシーの前記集合が、スタック保護を提供し前記第1のルーチンの前記スタックフレームの記憶位置を含むスタック記憶位置への不適切なアクセスを防ぐ、スタック保護ポリシーを含む、システム。 - 実行されると、命令を処理する方法を実行するコードを記憶した非一時的コンピュータ可読媒体であって、前記方法が、
現在の命令を含むコード実行領域から隔離されたメタデータ処理領域において実行されるメタデータ処理のための前記現在の命令を受信するステップと、
前記現在の命令のためのメタデータに関連して前記メタデータ処理領域によって、1つまたは複数のポリシーの集合に従った前記現在の命令の実行を許容するかどうかを判定するステップとを備え、前記1つまたは複数のポリシーが、命令の完全なシーケンスの実行を、前記完全なシーケンスの最初の命令から前記完全なシーケンスの最後の命令まで指定された順序で実施する、ルールの集合を含む、非一時的コンピュータ可読媒体。 - プロセッサと、
前記プロセッサによって実行されると、命令を処理する方法を実行するコードを記憶したメモリとを備え、前記方法が、
現在の命令を含むコード実行領域から隔離されたメタデータ処理領域において実行されるメタデータ処理のための前記現在の命令を受信するステップと、
前記現在の命令のためのメタデータに関連して前記メタデータ処理領域によって、1つまたは複数のポリシーの集合に従った前記現在の命令の実行を許容するかどうかを判定するステップとを備え、前記1つまたは複数のポリシーが、命令の完全なシーケンスの実行を、前記完全なシーケンスの最初の命令から前記完全なシーケンスの最後の命令まで指定された順序で実施する、ルールの集合を含む、システム。 - メタデータタグを生成して使用する方法であって、
コード実行領域から隔離されたメタデータ処理領域において使用される複数の指定されたレジスタのうちの第1の指定されたレジスタにブートストラップタグを記憶するステップと、
前記ブートストラップタグから1つまたは複数の追加のメタデータタグを導出するために第1の処理を実行するステップとを備え、前記第1の処理が、前記メタデータ処理領域における1つまたは複数のルールのメタデータ処理をトリガする1つまたは複数の命令を前記コード実行領域において実行することを含む、方法。 - 前記ブートストラップタグが、前記メタデータ処理領域により使用されるすべての他のメタデータタグがそこから導出される、初期シードタグとして使用される、請求項44に記載の方法。
- 前記ブートストラップタグがハードワイヤリングされ、または読取り専用メモリの一部分に記憶される、請求項44に記載の方法。
- 前記記憶するステップおよび前記第1の処理が、前記メタデータ処理領域および前記コード実行領域を含むシステムをブートするときにブートストラッププログラムの第1のコード部分を実行することによって実行される処理に含まれる、請求項44に記載の方法。
- 前記第1の指定されたレジスタに記憶されている前記ブートストラップタグからデフォルトタグを導出するステップと、
前記複数の指定されたレジスタのうちの第2の指定されたレジスタに前記デフォルトタグを記憶するステップと、
前記コード実行領域により使用される複数のメモリ位置の各々のためのメタデータタグとして前記第2の指定されたレジスタから前記デフォルトタグを書き込む前記メタデータ処理領域におけるルールのメタデータ処理をトリガする、命令シーケンスを実行するステップとをさらに備える、請求項44に記載の方法。 - 前記第1の処理を前記実行するステップが、前記ブートストラップタグから導出されたメタデータタグの初期集合を生成するステップを含み、前記初期集合の前記メタデータタグの各々が、前記メタデータ処理領域におけるルールキャッシュミス処理をトリガする前記コード実行領域における現在の命令を実行することによって生成され、これにより、前記現在の命令のための前記ルールキャッシュにルールが存在せず、前記ルールキャッシュが、許容される動作を定義するために前記メタデータ処理領域によって使用されるメタデータについてのルールを含む、請求項44に記載の方法。
- ルールキャッシュミス処理が、
前記メタデータ処理領域において実行するルールキャッシュミスハンドラによって、前記現在の命令のための新しいルールを計算するステップを含み、前記新しいルールがメタデータタグの前記初期集合の結果メタデータタグを含む、請求項49に記載の方法。 - 前記初期集合の各メタデータタグが、他のメタデータタグを導出するためにさらに使用され得るタグ生成源である、請求項49に記載の方法。
- 1つまたは複数の指定された命令の第1の集合の実行が、1つまたは複数の他のメタデータタグのシーケンスを生成するために使用されるタグ生成源として示される各メタデータタグを生成する、前記メタデータ処理領域におけるルールおよびルールキャッシュミス処理をトリガし、1つまたは複数の指定された命令の第2の集合の実行が、追加のメタデータタグをさらに生成するために使用できない非生成タグとして示される各メタデータタグを生成する、前記メタデータ処理領域におけるルールおよびルールキャッシュミス処理をトリガする、請求項51に記載の方法。
- 前記ブートストラッププログラムがさらに、拡張された特権、能力、または権限を前記タグ付けされた1つまたは複数の命令に与えるために、指定されたコード部分の1つまたは複数の命令に1つまたは複数の特別なメタデータコードタグを書き込む、前記メタデータ処理領域において処理されるルールをトリガする命令を含む、請求項49に記載の方法。
- 前記指定されたコード部分がカーネルコードおよびローダコードのうちの1つまたは複数を含む、請求項53に記載の方法。
- 前記1つまたは複数の特別なメタデータコードタグが、メタデータタグの前記初期集合の第1のメタデータタグから導出され、前記第1のメタデータタグが特別な命令タグ生成源である、請求項53に記載の方法。
- メタデータタグの前記初期集合が、
命令をタグ付けするために使用される1つまたは複数のコードタグのシーケンスを生成するために使用されるタグ生成源である、初期命令メタデータタグと、
1つまたは複数の他のmallocタグ生成源のシーケンスを生成するために使用されるタグ生成源である初期mallocメタデータタグであって、前記1つまたは複数の他のmallocタグ生成源の各々が、割り振られたメモリセルおよび異なるアプリケーションにより使用される割り振られたメモリセルへのポインタのいずれかを色付けすることに関連して前記異なるアプリケーションのための1つまたは複数の他のメタデータタグのシーケンスを生成するために使用される、初期mallocメタデータタグと、
1つまたは複数の他の制御フロー整合性タグ生成源のシーケンスを生成するために使用されるタグ生成源である初期制御フロー整合性タグであって、前記1つまたは複数の他の制御フロー整合性タグ生成源の各々が、異なるアプリケーションの制御移転ターゲットをタグ付けすることに関連して前記異なるアプリケーションのための1つまたは複数の他のメタデータタグのシーケンスを生成するために使用される、初期制御フロー整合性タグと、
1つまたは複数の他のテイントタグ生成源のシーケンスを生成するために使用されるタグ生成源である初期テイントタグであって、前記1つまたは複数の他のテイントタグ生成源の各々が、データアイテムを産生または修正したコードに基づいて、異なるアプリケーションにより使用される前記データアイテムをメタデータテイントタグでタグ付けすることに関連して前記異なるアプリケーションのための1つまたは複数の他のメタデータテイントタグのシーケンスを生成するために使用される、初期テイントタグ
のうちの任意の1つまたは複数を含む、請求項51に記載の方法。 - メタデータタグのシーケンスが、前記メタデータ処理領域におけるルールの他の処理をトリガする命令を実行することによって生成され、前記他の処理が、
前記シーケンスの中の現在のメタデータタグを使用して前記シーケンスの中の次のメタデータタグを生成するステップであって、前記現在のメタデータタグが、前記シーケンスの現在の状態を示し、アトムと関連付けられるメタデータタグとして記憶され、前記アトムがレジスタまたはメモリ位置のいずれかである、ステップと、
前記アトムと関連付けられる前記メタデータタグとして前記次のメタデータタグを保存することによってシーケンスの前記現在の状態を更新するステップとを備える、請求項44に記載の方法。 - アプリケーションのための制御フロー情報を取得する方法であって、
プロセッサによる実行のために前記アプリケーションをロードするローダを実行するステップであって、前記ローダを実行する前記ステップが、メタデータ処理領域における1つまたは複数のルールの第1の集合のメタデータ処理をトリガする1つまたは複数の命令を含む第1のコード部分を実行するステップを含み、1つまたは複数のルールの前記第1の集合の前記メタデータ処理が、前記メタデータ処理領域にアクセス可能でありコード実行領域にアクセス可能ではないアプリケーションメタデータとして前記アプリケーションのための前記制御フロー情報を収集して記憶することを含む、ステップと、
前記コード実行領域において前記アプリケーションの命令を実行するステップであって、前記アプリケーションの前記命令を実行する前記ステップが、前記アプリケーションにおける制御の第1のソース位置から第1のターゲット位置への移転を許容するかどうかを判定するために前記制御フロー情報の少なくとも一部分を使用する、制御フローポリシーのルールの第2の集合のメタデータ処理をトリガする、ステップとを備える、方法。 - 前記第1のターゲット位置が、制御を前記第1のターゲット位置に移転することが許容される1つまたは複数の許容可能なソース位置の集合を有する、請求項58に記載の方法。
- アプリケーションメタデータとして前記アプリケーションのための前記制御フロー情報を収集して記憶する前記ステップがさらに前記メタデータ処理領域を備え、前記メタデータ処理領域が、
1つまたは複数の許容可能なソース位置の前記集合を特定する第1のメタデータで前記第1のターゲット位置をタグ付けすることを含む他の処理を実行し、前記第1のメタデータが前記アプリケーションメタデータの前記制御フロー情報の一部分として記憶される、請求項59に記載の方法。 - 前記アプリケーションの第1の命令が、制御を前記第1のソース位置から前記第1のターゲット位置に移転し、前記第1の命令が、制御を前記第1のターゲット位置に移転することが許容される1つまたは複数の許容可能なソース位置の前記集合に前記第1のソース位置が含まれるかどうかを判定することによって前記第1の命令の実行を許容するかどうかを判定するために前記第1のメタデータを使用する、前記制御フローポリシーの1つまたは複数のルールのメタデータ処理をトリガする、請求項60に記載の方法。
- 前記他の処理がさらに、固有のソースメタデータタグで前記集合の各々の許容可能なソース位置をタグ付けすることを含む、請求項61に記載の方法。
- 各々の許容可能なソース位置の各々の固有のソースメタデータタグが、前記アプリケーションのためのソースメタデータタグの第1のシーケンスに含まれ、前記第1のシーケンスが、制御フロー生成源タグから生成されるソースメタデータタグの固有のシーケンスである、請求項62に記載の方法。
- 前記制御フロー生成源タグが、初期ブートストラップタグから導出された初期制御フロー生成源タグから生成される、請求項63に記載の方法。
- 前記初期制御フロー生成源タグが、複数の追加の制御フロー生成源タグを生成するために使用され、前記追加の制御フロー生成源タグの各々が、異なるアプリケーションのための固有のソースメタデータタグのシーケンスを生成するために使用される、請求項64に記載の方法。
- 実行されると、メタデータタグを生成して使用する方法を実行するコードを記憶した非一時的コンピュータ可読媒体であって、前記方法が、
コード実行領域から隔離されたメタデータ処理領域において使用される複数の指定されたレジスタのうちの第1の指定されたレジスタにブートストラップタグを記憶するステップと、
前記ブートストラップタグから1つまたは複数の追加のメタデータタグを導出するために第1の処理を実行するステップとを備え、前記第1の処理が、前記メタデータ処理領域における1つまたは複数のルールのメタデータ処理をトリガする1つまたは複数の命令を前記コード実行領域において実行することを含む、非一時的コンピュータ可読媒体。 - プロセッサと、
実行されるとメタデータタグを生成して使用する方法を実行するコードを記憶したメモリとを備え、前記方法が、
コード実行領域から隔離されたメタデータ処理領域において使用される複数の指定されたレジスタのうちの第1の指定されたレジスタにブートストラップタグを記憶するステップと、
前記ブートストラップタグから1つまたは複数の追加のメタデータタグを導出するために第1の処理を実行するステップとを備え、前記第1の処理が、前記メタデータ処理領域における1つまたは複数のルールのメタデータ処理をトリガする1つまたは複数の命令を前記コード実行領域において実行することを含む、システム。 - 実行されると、アプリケーションのための制御フロー情報を取得する方法を実行するコードを記憶した非一時的コンピュータ可読媒体であって、前記方法が、
プロセッサによる実行のために前記アプリケーションをロードするローダを実行するステップであって、前記ローダを実行する前記ステップが、メタデータ処理領域における1つまたは複数のルールの第1の集合のメタデータ処理をトリガする1つまたは複数の命令を含む第1のコード部分を実行するステップを含み、1つまたは複数のルールの前記第1の集合の前記メタデータ処理が、前記メタデータ処理領域にアクセス可能でありコード実行領域にアクセス可能ではないアプリケーションメタデータとして前記アプリケーションのための前記制御フロー情報を収集して記憶することを含む、ステップと、
前記コード実行領域において前記アプリケーションの命令を実行するステップであって、前記アプリケーションの前記命令を実行する前記ステップが、前記アプリケーションにおける制御の第1のソース位置から第1のターゲット位置への移転を許容するかどうかを判定するために前記制御フロー情報の少なくとも一部分を使用する、制御フローポリシーのルールの第2の集合のメタデータ処理をトリガする、ステップとを備える、非一時的コンピュータ可読媒体。 - プロセッサと、
実行されるとアプリケーションのための制御フロー情報を取得する方法を実行するコードを記憶したメモリとを備え、前記方法が、
プロセッサによる実行のために前記アプリケーションをロードするローダを実行するステップであって、前記ローダを実行する前記ステップが、メタデータ処理領域における1つまたは複数のルールの第1の集合のメタデータ処理をトリガする1つまたは複数の命令を含む第1のコード部分を実行するステップを含み、1つまたは複数のルールの前記第1の集合の前記メタデータ処理が、前記メタデータ処理領域にアクセス可能でありコード実行領域にアクセス可能ではないアプリケーションメタデータとして前記アプリケーションのための前記制御フロー情報を収集して記憶するステップを含む、ステップと、
前記コード実行領域において前記アプリケーションの命令を実行するステップであって、前記アプリケーションの前記命令を実行する前記ステップが、前記アプリケーションにおける制御の第1のソース位置から第1のターゲット位置への移転を許容するかどうかを判定するために前記制御フロー情報の少なくとも一部分を使用する、制御フローポリシーのルールの第2の集合のメタデータ処理をトリガする、ステップとを備える、システム。 - タグ付けされたデータソースとタグ付けされていないデータソースとの間でプロセッサにより仲介されるデータ転送を実行するための方法であって、
プロセッサ上で、タグ付けされていないデータソースから第1のデータをロードする第1の命令を実行するステップであって、前記タグ付けされていないデータソースが関連するメタデータタグを有しないメモリ位置を含む、ステップと、
第1のハードウェアによって、前記第1のデータが信頼されず公開のデータソースからのものであることを示す第1のメタデータタグで前記第1のデータをタグ付けするステップであって、前記第1のメタデータタグを有する前記第1のデータが第1のバッファに記憶される、ステップと、
前記プロセッサ上で、第1の1つまたは複数のルールを使用するメタデータ処理をトリガする第1のコードを実行するステップであって、前記第1の1つまたは複数のルールを使用する前記メタデータ処理が、前記第1のデータが信頼されることを示す第2のメタデータタグを有するように前記第1のデータを再タグ付けする再タグ付けを実行する、ステップとを備える、方法。 - 前記第2のメタデータタグが追加で、前記第1のデータが公開のソースからのものであることを示す、請求項70に記載の方法。
- 前記第2のメタデータタグを有する前記第1のデータが、関連するメタデータタグを各々有するメモリ位置を含むタグ付けされたデータソースであるメモリに記憶される、請求項70に記載の方法。
- 前記メモリが、1つまたは複数の信頼されるデータソースからのデータを含む信頼されるメモリである、請求項72に記載の方法。
- 前記メタデータ処理が、前記第1のコードを含むコード実行領域から隔離されたメタデータ処理領域において実行される、請求項70に記載の方法。
- 前記第1の1つまたは複数のルールが、許容された動作を定義するために前記メタデータ処理によって使用されるメタデータについてのルールである、請求項74に記載の方法。
- 前記第1のコードが1つまたは複数の命令を含み、前記1つまたは複数の命令の各々が、前記第2のメタデータタグを有するように前記第1のデータを再タグ付けする前記1つまたは複数のルールを呼び出す権限を前記各々の命令が有することを示す、特別な命令タグを有する、請求項70に記載の方法。
- 前記第1のメタデータタグを有する前記第1のデータが暗号化され、
前記プロセッサ上で1つまたは複数の命令を実行することによって、前記第1のメタデータタグを有する前記第1のデータを復号し、前記第1のメタデータタグを有する前記第1のデータの復号された形式を生成するステップと、
前記プロセッサ上で1つまたは複数の追加の命令を実行することによって検証処理を実行するステップとをさらに備え、前記検証処理が前記第1のデータの前記復号された形式が有効であることを確実にするためにデジタル署名を使用し、前記再タグ付けが前記第1のデータの検証処理の成功の後で実行される、請求項70に記載の方法。 - 前記第2のメタデータタグを有する前記第1のデータが、タグ付けされたメモリの第1のメモリ位置に復号された形式で記憶され、
暗号化された形式の前記第1のデータを産生するために前記第1のデータを暗号化し、前記第1のデータに従ってデジタル署名を生成するステップであって、暗号化する前記ステップおよび生成する前記ステップが前記プロセッサ上で追加のコードを実行することによって実行される、ステップと、
前記プロセッサ上で、前記タグ付けされたメモリの前記第1のメモリ位置からの前記第1のデータの前記暗号化された形式をタグ付けされていないメモリの宛先位置に記憶する第2の命令を実行するステップであって、前記第1のデータの前記暗号化された形式が関連するメタデータタグなしで前記宛先位置に記憶され、前記第2のメタデータタグが前記宛先位置に前記第1のデータの前記暗号化された形式を記憶する前に第2のハードウェアによって除去される、ステップとをさらに備える、請求項70に記載の方法。 - 第1の時点において、前記第1のデータが、タグ付けされていないメモリ部分の第1の位置に記憶され、第2の時点において、前記第1のメタデータタグを有し、前記第1のデータが信頼されず公開のデータソースからのものであることを示す前記第1のデータが、タグ付けされたメモリ部分の第2の位置に記憶され、前記タグ付けされていないメモリ部分および前記タグ付けされたメモリ部分が、同じメモリコントローラによってサービスされる同じメモリに含まれ、第2のメタデータ処理ルールが、前記データが公開であることを示す関連するメタデータタグを有するデータを前記タグ付けされていないメモリ部分に書き込む動作を実行することのみを前記プロセッサに許容し、タグ付けされていないデータに対して動作する外部のタグ付けされていないソースからの直接のメモリ動作が、前記同じメモリの前記タグ付けされていないメモリ部分にアクセスすることのみを許容される、請求項70に記載の方法。
- 前記第2のメタデータ処理ルールの少なくとも一部分がさらに、前記データが公開であり、加えて信頼されないことを示す関連するメタデータタグを有するデータを前記タグ付けされていないメモリ部分に書き込む動作を実行することのみを前記プロセッサに許容する、請求項79に記載の方法。
- 前記タグ付けされていないデータソースが、タグ付けされていないデータソースのみを含む第1のインターコネクトファブリックに接続され、前記第2のメタデータタグを伴う前記第1のデータが、タグ付けされたデータソースのみを含む第2のインターコネクトファブリックに接続されるメモリの位置に記憶される、請求項70に記載の方法。
- 前記第1のインターコネクトファブリックに接続される第2のプロセッサが、前記タグ付けされていないデータソースからのタグ付けされていないデータを使用して他の命令を実行し、前記他の命令が、メタデータ処理を実行することなく、かつ許容可能な動作を実施するためにメタデータについてのルールを使用することなく実行され、前記第2のプロセッサによる前記他の命令の実行が、前記第1のインターコネクトファブリックのタグ付けされていないデータソースからデータを読み取ること、および前記第1のインターコネクトファブリックのタグ付けされていないデータソースにデータを書き込むことのうちのいずれかを含む、1つまたは複数の動作を実行することを含む、請求項81に記載の方法。
- プロセッサと、
1つまたは複数のタグ付けされたメモリであって、前記1つまたは複数のタグ付けされたメモリの各メモリ位置が関連するメタデータタグを有する、メモリと、
第1のタグ付けされていないメモリを含む1つまたは複数のタグ付けされていないメモリであって、前記1つまたは複数のタグ付けされていないメモリのメモリ位置が関連するメタデータタグを有しない、メモリと、
命令に関連して許容される動作を定義するためにメタデータ処理を実行する際に使用されるメタデータについてのルールを含むルールキャッシュであって、前記プロセッサによって現在の命令を実行する前に、前記現在の命令の実行が許容されるかどうかを判定するために前記ルールキャッシュの1つまたは複数のルールを使用したメタデータ処理が実行される、ルールキャッシュと、
前記プロセッサによって実行されると、前記第1のタグ付けされていないメモリから前記プロセッサにより使用されるデータキャッシュへと第1のデータをロードする第1の命令であって、前記データキャッシュに記憶されている前記第1のデータが関連する第1のメタデータタグを有する、第1の命令と、
前記プロセッサによって実行されると、前記データキャッシュからの第2のデータを前記第1のタグ付けされていないメモリに記憶する第2の命令であって、前記データキャッシュに記憶されている前記第2のデータが関連する第2のメタデータタグを有する、第2の命令と、
前記プロセッサによって前記システムにおいて使用されるタグ付けされたデータにタグ付けされていないデータを変換する第1のハードウェア構成要素であって、前記第1の命令の実行に応答して、前記第1のハードウェア構成要素が、前記第1のタグ付けされていないメモリから、どのような関連するメタデータタグも伴わずに前記第1のデータを受信し、前記関連する第1のメタデータタグを有する前記第1のデータを出力する、第1のハードウェア構成要素と、
タグ付けされたデータをタグ付けされていないデータに変換する第2のハードウェア構成要素であって、前記第2の命令の実行に応答して、前記第2のハードウェア構成要素が、前記関連する第2のメタデータタグを有する前記第2のデータを受信し、どのような関連するメタデータタグも伴わずに前記第2のデータを出力する、第2のハードウェア構成要素とを備える、システム。 - どのような関連するメタデータタグも伴わない前記第1のデータが暗号化され、前記第1のハードウェア構成要素が、前記第1のデータを復号された形式に変換し、デジタル署名を使用して前記第1のデータの検証処理を実行し、検証処理が成功すると、前記第1のデータが信頼されることを示す前記関連する第1のメタデータタグを有するように前記第1のデータをタグ付けし、
前記第2の関連するメタデータタグを有する前記第2のデータが、復号された形式であり、前記第2のハードウェア構成要素が、前記第2のデータを暗号化された形式に変換し、前記第2のデータに従ってデジタル署名を生成する、請求項83に記載のシステム。 - 前記第1のハードウェア構成要素が、前記第1のデータが信頼されることを示すとともに、前記第1のデータが公開のソースからのものであることを特定する、前記関連する第1のメタデータタグを有するように前記第1のデータをタグ付けする、請求項84に記載のシステム。
- 1つまたは複数の暗号鍵集合が、ハードウェアにおいて符号化されるか、メモリに記憶されるかのいずれかであり、前記1つまたは複数の暗号鍵集合が、復号および検証処理を実行することに関連して前記第1のハードウェア構成要素によって使用され、暗号化を実行することおよびデジタル署名を作成することに関連して前記第2のハードウェア構成要素によって使用され、前記第1のデータが、前記第1のデータを復号するために前記第1のハードウェア構成要素によって使用される前記暗号鍵集合のうちの特定の1つを特定し、前記第2のデータの前記関連する第2のメタデータタグが、前記第2のデータを暗号化してそれに署名するために前記第2のハードウェア構成要素によって使用される前記暗号鍵集合のうちの特定の1つを特定する、請求項84に記載のシステム。
- 現在の命令を処理する方法であって、
メタデータ処理のために前記現在の命令を受信するステップと、
前記現在の命令を含むコード実行領域から隔離されたメタデータ処理領域において前記現在の命令のためのメタデータ処理を実行するステップであって、前記現在の命令が前記メタデータ処理において使用される第1のメタデータタグを有する第1のメモリ位置を参照し、前記現在の命令のための前記メタデータ処理が、
メモリから前記第1のメタデータタグを取り出すための処理を実行するステップと、
前記メモリから前記第1のメモリ位置のための前記第1のメタデータタグを受信する前に、前記第1のメモリ位置の前記第1のメタデータタグの予測される値を判定するステップと、
前記第1のメモリ位置の前記第1のメタデータタグの前記予測される値を使用して、前記現在の命令の結果オペランドのための第1の結果メタデータタグを判定するステップと、
前記メモリから前記第1のメタデータタグを受信するステップと、
前記第1のメタデータタグが前記第1のメタデータタグの前記予測される値と一致するかどうかを判定するステップと、
前記第1のメタデータタグが前記第1のメタデータタグの前記予測される値と一致すると判定したことに応答して、前記結果オペランドのための最終的な結果メタデータタグとして前記第1の結果メタデータタグを使用するステップと
を含む、ステップとを備える、方法。 - 前記現在の命令のための前記メタデータ処理がさらに、
前記現在の命令および前記現在の命令のための入力メタデータタグの集合に従って、前記現在の命令のための第1のルールを判定するステップであって、前記第1のルールが、前記第1のメモリ位置の前記第1のメタデータタグの前記予測される値を含み、前記第1の結果メタデータタグを含み、前記第1のルールが前記メタデータ処理領域におけるメタデータ処理のために使用されるルールキャッシュに含まれる、ステップと、
前記第1のメタデータタグが前記第1のメタデータタグの前記予測される値と一致しないと判定したことに応答して、前記現在の命令のための前記メタデータ処理領域においてルールキャッシュミス処理を実行するステップとを備える、請求項87に記載の方法。 - 前記現在の命令のための前記メタデータ処理領域における前記ルールキャッシュミス処理が、
前記コード実行領域における前記現在の命令の実行が許容されるかどうかを判定するステップと、
前記コード実行領域における前記現在の命令の実行が許容されると判定したことに応答して、前記現在の命令のための新しいルールを生成するステップであって、前記新しいルールが前記現在の命令、入力メタデータタグの前記集合、および前記第1のメタデータタグに従って生成される、ステップと、
前記メタデータ処理領域におけるメタデータ処理のために使用される前記ルールキャッシュへと前記新しいルールを挿入するステップとを含む、請求項88に記載の方法。 - 他の入力メタデータタグの前記集合が、前記現在の命令のための複数の他のメタデータタグを含み、他のメタデータ入力タグの前記集合が、プログラムカウンタ、前記現在の命令、および前記現在の命令の入力オペランドのうちのいずれかのためのメタデータタグを含む、請求項88に記載の方法。
- 前記結果オペランドが、前記現在の命令を実行したことの結果を記憶する宛先メモリ位置または宛先レジスタである、請求項87に記載の方法。
- 前記命令が、第1の段階および第2の段階を含む複数の段階に従って処理され、前記第1の段階が前記第2の段階の前に発生し、前記第1のメモリ位置の前記第1のメタデータタグの前記予測される値が前記第1の段階において判定され、前記第2の段階が、前記第1のメタデータタグが前記第1のメタデータタグの前記予測される値と一致するかどうかを判定する前記ステップを実行することを含み、前記第2の段階がまた、前記第1のメタデータタグが前記第1のメタデータタグの前記予測される値と一致しないと判定したことに応答して、前記現在の命令のための前記メタデータ処理領域における前記ルールキャッシュミス処理を実行することを含む、請求項88に記載の方法。
- 前記ルールキャッシュが、予測セレクタモードに従って、予測モードまたは通常処理モードのいずれかで動作するように構成可能であり、前記ルールキャッシュが、前記現在の命令のための前記メタデータ処理を実行するとき、前記予測モードで動作するように構成される、請求項88に記載の方法。
- 前記ルールキャッシュが前記予測モードで動作するように構成されるとき、前記ルールキャッシュが前記第1のルールに従って第1の出力を生成し、前記第1の出力が、次の命令のプログラムカウンタのためのメタデータタグ、前記現在の命令の前記結果オペランドのための前記第1の結果メタデータタグ、および前記第1のメタデータタグの前記予測される値を、前記第1の段階の出力としてを含み、前記ルールキャッシュが前記通常処理モードで動作するように構成されるとき、前記ルールキャッシュが、前記第1のルールとは異なる第2のルールに従って第2の出力を生成し、前記第2の出力が前記第1のメタデータタグの前記予測される値を含まず、前記第2の出力が前記現在の命令の結果オペランドのための、および前記次の命令の前記プログラムカウンタのためのメタデータタグを含む、請求項93に記載の方法。
- 前記ルールキャッシュが、前記予測モードにおいて動作するときに第1のポリシーのルールの第1のバージョンを使用し、そうではなく前記通常処理モードで動作するときに前記第1のポリシーのルールの第2のバージョンを使用し、前記第1のルールがルールの前記第1のバージョンに含まれ、前記第2のルールがルールの前記第2のバージョンに含まれる、請求項93に記載の方法。
- 複数のパイプライン段階を含むパイプラインプロセッサであって、前記複数の段階がメモリ段階およびライトバック段階を含む、パイプラインプロセッサと、
前記メモリ段階の完了の前に動作する統合されたメタデータ処理のためのプログラム可能ユニット(PUMP)であって、前記PUMPがメタデータ処理において使用される第1のメタデータタグを有する第1のメモリ位置を参照する現在の命令のための前記メタデータ処理を実行し、前記PUMPが前記現在の命令のための第1のメタデータタグを含む第1の入力を受信し、前記PUMPが前記ライトバック段階への入力として与えられる第1の出力を生成し、前記第1の出力が前記第1のメモリ位置の前記第1のメタデータタグの予測される値および前記現在の命令の結果オペランドのための第1の結果メタデータタグを含み、前記第1の結果メタデータタグが前記第1のメモリ位置のための前記第1のメタデータタグの前記予測される値に従って前記PUMPによって判定される、PUMPと、
前記第1のメモリ位置のための前記第1のメタデータタグが前記第1のメタデータタグの前記予測される値と一致するかどうかを判定し、前記第1のメタデータタグが前記第1のメタデータタグの前記予測される値と一致するときに前記結果オペランドのための最終的な結果メタデータタグとして前記第1の結果メタデータタグを使用する、前記ライドバック段階のハードウェア構成要素とを備える、システム。 - 前記PUMPが、前記メモリ段階と同時に動作し、さらに予測モードで動作する第1のPUMPであり、前記第1のメモリ位置の前記第1のメタデータタグの前記予測される値を判定し、前記システムが、通常の非予測モードで動作する第2のPUMPを含み、前記第1のメモリ位置の前記第1のメタデータタグのためのいずれの予測される値も判定せず、前記第2のPUMPが、前記メモリ段階と前記ライトバック段階との間の別の段階として統合される、請求項96に記載のシステム。
- 前記第1のPUMPが、前記予測モードで動作するときに使用するための第1のポリシーのルールの第1のバージョンを使用し、前記第2のPUMPが、前記通常の非予測モードで動作するときに使用するための前記第1のポリシーのルールの第2のバージョンを使用し、前記第1のPUMPが、前記第1のバージョンからの第1のルールに従って前記第1の出力を判定し、前記第2のPUMPが、前記第2のバージョンからの第2のルールに従って第2の出力を判定し、前記第2の出力が、前記第1のメモリ位置のための第2の結果メタデータタグを含み、前記第2の出力が、前記ライトバック段階への入力として与えられ、前記ライトバック段階の前記ハードウェア構成要素が追加で、前記第1のメタデータタグが前記予測される値と一致しないとき、前記結果オペランドのための前記最終的な結果メタデータタグとして前記第2の結果メタデータタグを使用する、請求項97に記載のシステム。
- 実行されると、タグ付けされたデータソースとタグ付けされていないデータソースとの間でプロセッサにより仲介されるデータ転送の方法を実行するコードを記憶した、非一時的コンピュータ可読媒体であって、前記方法が、
プロセッサ上で、タグ付けされていないデータソースから第1のデータをロードする第1の命令を実行するステップであって、前記タグ付けされていないデータソースが、関連するメタデータタグを有しないメモリ位置を含む、ステップと、
第1のハードウェアによって、前記第1のデータが信頼されず公開されているデータソースからのものであることを示す第1のメタデータタグで前記第1のデータをタグ付けするステップであって、前記第1のメタデータタグを有する前記第1のデータが第1のバッファに記憶される、ステップと、
前記プロセッサ上で、第1の1つまたは複数のルールを使用したメタデータ処理をトリガする第1のコードを実行するステップであって、前記第1の1つまたは複数のルールを使用した前記メタデータ処理が、前記第1のデータが信頼されることを示す第2のメタデータタグを有するように前記第1のデータを再タグ付けする再タグ付けを実行する、ステップとを備える、非一時的コンピュータ可読媒体。 - 実行されると、現在の命令を処理する方法を実行するコードを記憶した、非一時的コンピュータ可読媒体であって、前記方法が、
メタデータ処理のために前記現在の命令を受信するステップと、
前記現在の命令を含むコード実行領域から隔離されたメタデータ処理領域において前記現在の命令のためのメタデータ処理を実行するステップであって、前記現在の命令が前記メタデータ処理において使用される第1のメタデータタグを有する第1のメモリ位置を参照し、前記現在の命令のための前記メタデータ処理が、
前記メモリから前記第1のメタデータタグを取り出すための処理を実行するステップと、
前記メモリから前記第1のメモリ位置のための前記第1のメタデータタグを受信する前に、前記第1のメモリ位置の前記第1のメタデータタグの予測される値を判定するステップと、
前記第1のメモリ位置の前記第1のメタデータタグの前記予測される値を使用して、前記現在の命令の結果オペランドのための第1の結果メタデータタグを判定するステップと、
前記メモリから前記第1のメタデータタグを受信するステップと、
前記第1のメタデータタグが前記第1のメタデータタグの前記予測される値と一致するかどうかを判定するステップと、
前記第1のメタデータタグが前記第1のメタデータタグの前記予測される値と一致すると判定したことに応答して、前記結果オペランドのための最終的な結果メタデータタグとして前記第1の結果メタデータタグを使用するステップと
を含む、ステップとを備える、非一時的コンピュータ可読媒体。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562268639P | 2015-12-17 | 2015-12-17 | |
US62/268,639 | 2015-12-17 | ||
US201562270187P | 2015-12-21 | 2015-12-21 | |
US62/270,187 | 2015-12-21 | ||
US15/168,689 | 2016-05-31 | ||
US15/168,689 US10235176B2 (en) | 2015-12-17 | 2016-05-31 | Techniques for metadata processing |
PCT/US2016/066188 WO2017106101A2 (en) | 2015-12-17 | 2016-12-12 | Techniques for metadata processing |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2019504403A true JP2019504403A (ja) | 2019-02-14 |
JP2019504403A5 JP2019504403A5 (ja) | 2020-01-30 |
JP7000326B2 JP7000326B2 (ja) | 2022-01-19 |
Family
ID=57708815
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018550654A Active JP7053486B2 (ja) | 2015-12-17 | 2016-12-12 | メタデータ処理のための技法 |
JP2018531549A Active JP7000326B2 (ja) | 2015-12-17 | 2016-12-12 | メタデータ処理のための技法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018550654A Active JP7053486B2 (ja) | 2015-12-17 | 2016-12-12 | メタデータ処理のための技法 |
Country Status (7)
Country | Link |
---|---|
US (14) | US10235176B2 (ja) |
EP (2) | EP3387578A1 (ja) |
JP (2) | JP7053486B2 (ja) |
KR (2) | KR102572262B1 (ja) |
CN (2) | CN109074447A (ja) |
SG (2) | SG11201804733YA (ja) |
WO (2) | WO2017106103A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230084495A1 (en) * | 2021-09-14 | 2023-03-16 | Apple Inc. | Verifiable machine code |
Families Citing this family (87)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9990492B2 (en) * | 2014-07-23 | 2018-06-05 | Grammatech, Inc. | Systems and/or methods for automatically protecting against memory corruption vulnerabilities |
US10078763B2 (en) | 2014-11-19 | 2018-09-18 | BAE Systems Information and Electronic Systems Integration Incc | Programmable unit for metadata processing |
US10339796B2 (en) * | 2015-07-07 | 2019-07-02 | Ilumi Sulutions, Inc. | Wireless control device and methods thereof |
US11978336B2 (en) | 2015-07-07 | 2024-05-07 | Ilumi Solutions, Inc. | Wireless control device and methods thereof |
EP3320702B1 (en) | 2015-07-07 | 2022-10-19 | Ilumi Solutions, Inc. | Wireless communication methods |
US9916141B2 (en) | 2015-10-15 | 2018-03-13 | International Business Machines Corporation | Modifying execution flow in save-to-return code scenarios |
US10235176B2 (en) | 2015-12-17 | 2019-03-19 | The Charles Stark Draper Laboratory, Inc. | Techniques for metadata processing |
US10936713B2 (en) | 2015-12-17 | 2021-03-02 | The Charles Stark Draper Laboratory, Inc. | Techniques for metadata processing |
US20200175451A1 (en) * | 2016-02-29 | 2020-06-04 | Dimensional Insight Incorporated | Hospital operations measurement and performance analysis factory instance of a measure factory |
GB2547912B (en) * | 2016-03-02 | 2019-01-30 | Advanced Risc Mach Ltd | Register access control |
US9928128B2 (en) * | 2016-04-01 | 2018-03-27 | International Business Machines Corporation | In-pipe error scrubbing within a processor core |
US20180024751A1 (en) * | 2016-07-19 | 2018-01-25 | Western Digital Technologies, Inc. | Metadata management on a storage device |
US10346625B2 (en) * | 2016-10-31 | 2019-07-09 | International Business Machines Corporation | Automated mechanism to analyze elevated authority usage and capability |
US10896267B2 (en) * | 2017-01-31 | 2021-01-19 | Hewlett Packard Enterprise Development Lp | Input/output data encryption |
US10289555B1 (en) * | 2017-04-14 | 2019-05-14 | EMC IP Holding Company LLC | Memory read-ahead using learned memory access patterns |
CN108733311B (zh) * | 2017-04-17 | 2021-09-10 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和设备 |
US10650156B2 (en) | 2017-04-26 | 2020-05-12 | International Business Machines Corporation | Environmental security controls to prevent unauthorized access to files, programs, and objects |
US10567384B2 (en) * | 2017-08-25 | 2020-02-18 | Hewlett Packard Enterprise Development Lp | Verifying whether connectivity in a composed policy graph reflects a corresponding policy in input policy graphs |
US10396944B2 (en) | 2017-09-19 | 2019-08-27 | International Business Machines Corporation | Low latency corrupt data tagging on a cross-chip link |
EP3460709B1 (en) * | 2017-09-26 | 2022-02-09 | Secure-IC SAS | Devices and methods for secured processors |
CN107864139B (zh) * | 2017-11-09 | 2020-05-12 | 北京科技大学 | 一种基于动态规则的密码学属性基访问控制方法与系统 |
US10719722B2 (en) | 2017-11-12 | 2020-07-21 | Bendix Commercial Vehicle Systems Llc | Driving oriented digital video recorder system |
WO2019113843A1 (en) * | 2017-12-13 | 2019-06-20 | Intel Corporation | Malware detection in memory |
US10552162B2 (en) * | 2018-01-22 | 2020-02-04 | International Business Machines Corporation | Variable latency flush filtering |
WO2019152805A1 (en) * | 2018-02-02 | 2019-08-08 | Dover Microsystems, Inc. | System and method for translating mapping policy into code |
SG11202007272QA (en) * | 2018-02-02 | 2020-08-28 | Charles Stark Draper Laboratory Inc | Systems and methods for policy execution processing |
WO2019152822A1 (en) * | 2018-02-02 | 2019-08-08 | Dover Microsystems, Inc. | Systems and methods for post cache interlocking |
TW201945971A (zh) | 2018-04-30 | 2019-12-01 | 美商多佛微系統公司 | 用於檢查安全性能的系統和方法 |
US11573800B2 (en) | 2018-07-05 | 2023-02-07 | Marvell Asia Pte, Ltd. | Complex I/O value prediction for multiple values with physical or virtual addresses |
US11216432B2 (en) * | 2018-07-06 | 2022-01-04 | Cfph, Llc | Index data structures and graphical user interface |
KR102668086B1 (ko) * | 2018-08-02 | 2024-05-21 | 에스케이하이닉스 주식회사 | 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 |
US11030149B2 (en) * | 2018-09-06 | 2021-06-08 | Sap Se | File format for accessing data quickly and efficiently |
CN110018848B (zh) * | 2018-09-29 | 2023-07-11 | 广州安凯微电子股份有限公司 | 一种基于risc-v的混合混算系统及方法 |
US10545850B1 (en) | 2018-10-18 | 2020-01-28 | Denso International America, Inc. | System and methods for parallel execution and comparison of related processes for fault protection |
US11108674B2 (en) | 2018-10-30 | 2021-08-31 | Bank Of America Corporation | Data management system and method |
WO2020097177A1 (en) | 2018-11-06 | 2020-05-14 | Dover Microsystems, Inc. | Systems and methods for stalling host processor |
EP3881190A1 (en) * | 2018-11-12 | 2021-09-22 | Dover Microsystems, Inc. | Systems and methods for metadata encoding |
US11741196B2 (en) | 2018-11-15 | 2023-08-29 | The Research Foundation For The State University Of New York | Detecting and preventing exploits of software vulnerability using instruction tags |
CN109710312A (zh) * | 2018-12-13 | 2019-05-03 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于risc-v指令集的实时中断处理方法、装置及工控处理器 |
US11841956B2 (en) | 2018-12-18 | 2023-12-12 | Dover Microsystems, Inc. | Systems and methods for data lifecycle protection |
CN109729158B (zh) * | 2018-12-19 | 2021-09-28 | 深圳市酷开网络科技股份有限公司 | 一种设备id标识信息的生成方法、系统及存储介质 |
CN109672892A (zh) * | 2018-12-25 | 2019-04-23 | 广东浪潮大数据研究有限公司 | 一种图像压缩装置、方法和fpga板卡 |
WO2020150351A1 (en) * | 2019-01-18 | 2020-07-23 | Dover Microsystems, Inc. | Systems and methods for metadata classification |
US11232208B2 (en) | 2019-02-26 | 2022-01-25 | The Trustees Of The University Of Pennsylvania | Methods, systems, and computer readable media for adaptive metadata architecture |
EP3915028B1 (en) | 2019-03-12 | 2022-11-30 | Huawei Technologies Co., Ltd. | Apparatus and method for enforcing hardware-assisted memory safety |
CN110007964A (zh) * | 2019-03-15 | 2019-07-12 | 芯来科技(武汉)有限公司 | 用于risc-v架构的中断系统 |
US11782816B2 (en) * | 2019-03-19 | 2023-10-10 | Jens C. Jenkins | Input/output location transformations when emulating non-traced code with a recorded execution of traced code |
US11194764B1 (en) * | 2019-03-21 | 2021-12-07 | Amazon Technologies, Inc. | Tag policies for tagging system |
US11288213B2 (en) * | 2019-03-29 | 2022-03-29 | Intel Corporation | Memory protection with hidden inline metadata |
US11068269B1 (en) * | 2019-05-20 | 2021-07-20 | Parallels International Gmbh | Instruction decoding using hash tables |
TWI722496B (zh) * | 2019-06-20 | 2021-03-21 | 慧榮科技股份有限公司 | 使用者資料的加解密方法及裝置 |
US11580234B2 (en) * | 2019-06-29 | 2023-02-14 | Intel Corporation | Implicit integrity for cryptographic computing |
US11645425B2 (en) | 2019-07-03 | 2023-05-09 | Beyond Semiconductor, d.o.o. | Systems and methods for data-driven secure and safe computing |
CN110472388B (zh) * | 2019-07-22 | 2023-07-04 | 吉林大学 | 一种设备管控系统及其用户权限控制方法 |
US11275840B2 (en) * | 2019-07-29 | 2022-03-15 | Sap Se | Management of taint information attached to strings |
CN110443214B (zh) * | 2019-08-12 | 2022-03-01 | 山东浪潮科学研究院有限公司 | 一种基于risc-v的人脸识别加速电路系统及加速方法 |
US11947663B2 (en) * | 2019-09-24 | 2024-04-02 | The Trustees Of Columbia University In The City Of New York | Control flow protection based on phantom addressing |
US10956135B1 (en) * | 2019-10-11 | 2021-03-23 | International Business Machines Corporation | Enforcing policy in dataflows |
US11362997B2 (en) * | 2019-10-16 | 2022-06-14 | International Business Machines Corporation | Real-time policy rule evaluation with multistage processing |
US12079197B2 (en) | 2019-10-18 | 2024-09-03 | Dover Microsystems, Inc. | Systems and methods for updating metadata |
US12093190B2 (en) * | 2019-11-08 | 2024-09-17 | Nec Corporation | Recordation of data in accordance with data compression method and counting reading of the data in accordance with data counting method |
CN110866492B (zh) * | 2019-11-13 | 2022-12-13 | 广州品唯软件有限公司 | 一种基线分支的识别方法、装置及计算机系统 |
CN110889147B (zh) * | 2019-11-14 | 2022-02-08 | 中国人民解放军国防科技大学 | 一种利用填充缓存抵御Cache边信道攻击的方法 |
CN110806719B (zh) * | 2019-12-04 | 2021-08-27 | 深圳市英威腾电气股份有限公司 | 一种plc系统及其控制方法 |
US12019736B2 (en) | 2020-02-27 | 2024-06-25 | The Trustees Of The University Of Pennsylvania | Methods, systems, and computer readable media for main memory tag compression |
KR102338774B1 (ko) * | 2020-06-01 | 2021-12-14 | 주식회사 올리브텍 | 스토리지 운영체제의 커널 수준에서 파일 내용 읽기 및 쓰기를 방지하여 데이터 유출 및 훼손을 방지하는 데이터 보호 방법 |
CN111857831B (zh) * | 2020-06-11 | 2021-07-20 | 成都海光微电子技术有限公司 | 一种存储体冲突优化方法、并行处理器及电子设备 |
US11550715B2 (en) * | 2020-08-16 | 2023-01-10 | Mellanox Technologies, Ltd. | Virtual splitting of memories |
US11714897B2 (en) * | 2020-09-02 | 2023-08-01 | Mobileye Vision Technologies Ltd. | Secure distributed execution of jobs |
CN112181529A (zh) * | 2020-10-12 | 2021-01-05 | Oppo广东移动通信有限公司 | 应用程序控制方法、装置以及电子设备 |
US20220129343A1 (en) * | 2020-10-22 | 2022-04-28 | Dover Microsystems, Inc. | Systems and methods for reducing exception latency |
US11790085B2 (en) * | 2020-10-29 | 2023-10-17 | Electronics And Telecommunications Research Institute | Apparatus for detecting unknown malware using variable opcode sequence and method using the same |
CN112256330B (zh) * | 2020-11-03 | 2021-11-09 | 中国人民解放军军事科学院国防科技创新研究院 | 用于加速数字信号处理的risc-v指令集扩展方法 |
KR102403127B1 (ko) * | 2020-11-19 | 2022-05-27 | 주식회사 올리브텍 | 스토리지 운영체제의 커널 수준에서 파일에 지정된 열람제한시간 동안 파일 내용 읽기 및 쓰기를 원천적으로 방지하는 데이터 보호 방법 |
US11669625B2 (en) | 2020-12-26 | 2023-06-06 | Intel Corporation | Data type based cryptographic computing |
US11599625B2 (en) * | 2021-01-28 | 2023-03-07 | Qualcomm Incorporated | Techniques for instruction perturbation for improved device security |
US20220391525A1 (en) * | 2021-05-10 | 2022-12-08 | Beyond Semiconductor, d.o.o. | Inter system policy federation in a data-driven secure and safe computing environment |
US11379468B1 (en) * | 2021-05-12 | 2022-07-05 | International Business Machines Corporation | Control flow graph refining via execution data |
US11630670B2 (en) | 2021-07-21 | 2023-04-18 | Apple Inc. | Multi-table signature prefetch |
CN113687971B (zh) * | 2021-08-24 | 2023-06-27 | 杭州迪普科技股份有限公司 | 内存映象文件的生成方法及装置 |
CN113835927B (zh) * | 2021-09-23 | 2023-08-11 | 武汉深之度科技有限公司 | 一种指令执行方法、计算设备及存储介质 |
WO2023132474A1 (ko) * | 2022-01-06 | 2023-07-13 | 부산대학교 산학협력단 | 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법 |
US20230305845A1 (en) * | 2022-03-22 | 2023-09-28 | Nvidia Corporation | Techniques to selectively store data |
CN116841515A (zh) | 2022-03-24 | 2023-10-03 | 瑞昱半导体股份有限公司 | 处理程序语言函数的装置及方法 |
US12039170B2 (en) * | 2022-06-06 | 2024-07-16 | Microsoft Technology Licensing, Llc | Hardware revocation engine for temporal memory safety |
US12072757B2 (en) * | 2022-10-28 | 2024-08-27 | Nxp B.V. | Data processing system with tag-based queue management |
CN115687538B (zh) * | 2022-11-14 | 2023-04-25 | 深圳标普云科技有限公司 | 一种企业信息采集分析方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013242633A (ja) * | 2012-05-18 | 2013-12-05 | Nippon Telegr & Teleph Corp <Ntt> | タグ付与装置及びタグ付与方法 |
GB2519608A (en) * | 2013-10-23 | 2015-04-29 | Avecto Ltd | Computer device and method for isolating untrusted content |
Family Cites Families (269)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1054576A (en) | 1909-07-16 | 1913-02-25 | Isaiah B Libbey | Unloading device. |
US1073977A (en) | 1913-03-07 | 1913-09-23 | Ralph P Fox | Safety-support for flying-machines. |
US5201056A (en) * | 1990-05-02 | 1993-04-06 | Motorola, Inc. | RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output |
US5778423A (en) | 1990-06-29 | 1998-07-07 | Digital Equipment Corporation | Prefetch instruction for improving performance in reduced instruction set processor |
EP0463965B1 (en) | 1990-06-29 | 1998-09-09 | Digital Equipment Corporation | Branch prediction unit for high-performance processor |
US5287467A (en) | 1991-04-18 | 1994-02-15 | International Business Machines Corporation | Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit |
US7095783B1 (en) * | 1992-06-30 | 2006-08-22 | Discovision Associates | Multistandard video decoder and decompression system for processing encoded bit streams including start codes and methods relating thereto |
US5628021A (en) * | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
JPH06332664A (ja) | 1993-03-23 | 1994-12-02 | Toshiba Corp | 表示制御システム |
US5485455A (en) | 1994-01-28 | 1996-01-16 | Cabletron Systems, Inc. | Network having secure fast packet switching and guaranteed quality of service |
US5664223A (en) | 1994-04-05 | 1997-09-02 | International Business Machines Corporation | System for independently transferring data using two independently controlled DMA engines coupled between a FIFO buffer and two separate buses respectively |
US5684977A (en) | 1995-03-31 | 1997-11-04 | Sun Microsystems, Inc. | Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system |
US5655100A (en) | 1995-03-31 | 1997-08-05 | Sun Microsystems, Inc. | Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system |
US5764946A (en) | 1995-04-12 | 1998-06-09 | Advanced Micro Devices | Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address |
US5848433A (en) | 1995-04-12 | 1998-12-08 | Advanced Micro Devices | Way prediction unit and a method for operating the same |
US5664197A (en) | 1995-04-21 | 1997-09-02 | Intel Corporation | Method and apparatus for handling bus master channel and direct memory access (DMA) channel access requests at an I/O controller |
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
JPH0969047A (ja) * | 1995-09-01 | 1997-03-11 | Sony Corp | Risc型マイクロプロセッサおよび情報処理装置 |
US5864707A (en) | 1995-12-11 | 1999-01-26 | Advanced Micro Devices, Inc. | Superscalar microprocessor configured to predict return addresses from a return stack storage |
US6058466A (en) | 1997-06-24 | 2000-05-02 | Sun Microsystems, Inc. | System for allocation of execution resources amongst multiple executing processes |
US6240502B1 (en) | 1997-06-25 | 2001-05-29 | Sun Microsystems, Inc. | Apparatus for dynamically reconfiguring a processor |
US6035374A (en) | 1997-06-25 | 2000-03-07 | Sun Microsystems, Inc. | Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency |
US5890008A (en) | 1997-06-25 | 1999-03-30 | Sun Microsystems, Inc. | Method for dynamically reconfiguring a processor |
US5941981A (en) | 1997-11-03 | 1999-08-24 | Advanced Micro Devices, Inc. | System for using a data history table to select among multiple data prefetch algorithms |
US6321297B1 (en) | 1998-01-05 | 2001-11-20 | Intel Corporation | Avoiding tag compares during writes in multi-level cache hierarchy |
US6157955A (en) | 1998-06-15 | 2000-12-05 | Intel Corporation | Packet processing system including a policy engine having a classification unit |
US6351784B1 (en) | 1998-12-28 | 2002-02-26 | International Business Machines Corp. | System for determining whether a subsequent transaction may be allowed or must be allowed or must not be allowed to bypass a preceding transaction |
US6324599B1 (en) | 1999-01-11 | 2001-11-27 | Oak Technology | Computer system and method for tracking DMA transferred data within a read-ahead local buffer without interrupting the host processor |
US6247097B1 (en) | 1999-01-22 | 2001-06-12 | International Business Machines Corporation | Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions |
US6636523B1 (en) | 1999-01-27 | 2003-10-21 | Advanced Micro Devices, Inc. | Flow control using rules queue monitoring in a network switching system |
US7065633B1 (en) | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
US8065504B2 (en) | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
US8127121B2 (en) | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US7941647B2 (en) * | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US6549903B1 (en) * | 1999-02-17 | 2003-04-15 | Elbrus International Limited | Integrity of tagged data |
US6625146B1 (en) | 1999-05-28 | 2003-09-23 | Advanced Micro Devices, Inc. | Method and apparatus for operating a network switch in a CPU-less environment |
US7254806B1 (en) | 1999-08-30 | 2007-08-07 | Ati International Srl | Detecting reordered side-effects |
US6438673B1 (en) | 1999-12-30 | 2002-08-20 | Intel Corporation | Correlated address prediction |
US7213247B1 (en) | 2000-01-10 | 2007-05-01 | Wind River Systems, Inc. | Protection domains for a computer operating system |
US6925549B2 (en) | 2000-12-21 | 2005-08-02 | International Business Machines Corporation | Asynchronous pipeline control interface using tag values to control passing data through successive pipeline stages |
US7062638B2 (en) | 2000-12-29 | 2006-06-13 | Intel Corporation | Prediction of issued silent store operations for allowing subsequently issued loads to bypass unexecuted silent stores and confirming the bypass upon execution of the stores |
US6560690B2 (en) | 2000-12-29 | 2003-05-06 | Intel Corporation | System and method for employing a global bit for page sharing in a linear-addressed cache |
GB0102516D0 (en) | 2001-01-31 | 2001-03-21 | Hewlett Packard Co | Trusted gateway system |
GB0102518D0 (en) | 2001-01-31 | 2001-03-21 | Hewlett Packard Co | Trusted operating system |
GB0102515D0 (en) | 2001-01-31 | 2001-03-21 | Hewlett Packard Co | Network adapter management |
GB0109722D0 (en) | 2001-04-20 | 2001-06-13 | Koninkl Philips Electronics Nv | Extendible instruction system |
US20030014466A1 (en) | 2001-06-29 | 2003-01-16 | Joubert Berger | System and method for management of compartments in a trusted operating system |
US6785776B2 (en) | 2001-07-26 | 2004-08-31 | International Business Machines Corporation | DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism |
US7599369B2 (en) | 2001-09-27 | 2009-10-06 | Broadcom Corporation | Apparatus and methods for hardware payload header suppression, expansion, and verification in a DOCSIS network |
US20030196108A1 (en) | 2002-04-12 | 2003-10-16 | Kung Kenneth C. | System and techniques to bind information objects to security labels |
US8017816B2 (en) | 2002-04-22 | 2011-09-13 | The Curators Of The University Of Missouri | Method of producing lower alcohols from glycerol |
US7631107B2 (en) | 2002-06-11 | 2009-12-08 | Pandya Ashish A | Runtime adaptable protocol processor |
US20040010612A1 (en) | 2002-06-11 | 2004-01-15 | Pandya Ashish A. | High performance IP processor using RDMA |
US7254696B2 (en) | 2002-12-12 | 2007-08-07 | Alacritech, Inc. | Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests |
US7594111B2 (en) | 2002-12-19 | 2009-09-22 | Massachusetts Institute Of Technology | Secure execution of a computer program |
US6976147B1 (en) | 2003-01-21 | 2005-12-13 | Advanced Micro Devices, Inc. | Stride-based prefetch mechanism using a prediction confidence value |
US7403925B2 (en) | 2003-03-17 | 2008-07-22 | Intel Corporation | Entitlement security and control |
US7467414B2 (en) | 2003-03-17 | 2008-12-16 | Intel Corporation | Entitlement security and control for information system entitlement |
US6922740B2 (en) | 2003-05-21 | 2005-07-26 | Intel Corporation | Apparatus and method of memory access control for bus masters |
US7168063B2 (en) | 2003-06-10 | 2007-01-23 | Microsoft Corporation | Systems and methods for employing tagged types in a dynamic runtime environment |
US20050108518A1 (en) | 2003-06-10 | 2005-05-19 | Pandya Ashish A. | Runtime adaptable security processor |
US7437718B2 (en) * | 2003-09-05 | 2008-10-14 | Microsoft Corporation | Reviewing the security of trusted software components |
US7580914B2 (en) * | 2003-12-24 | 2009-08-25 | Intel Corporation | Method and apparatus to improve execution of a stored program |
US7114036B2 (en) * | 2004-01-14 | 2006-09-26 | International Business Machines Corporation | Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected |
US7526757B2 (en) * | 2004-01-14 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program |
CN1558388A (zh) | 2004-01-16 | 2004-12-29 | 孙亚非 | 酒文化结合防伪技术在酒水促销中的应用方法 |
CA2459004A1 (en) | 2004-02-20 | 2005-08-20 | Ibm Canada Limited - Ibm Canada Limitee | Method and system to control data acces using security label components |
US7340469B1 (en) | 2004-04-16 | 2008-03-04 | George Mason Intellectual Properties, Inc. | Implementing security policies in software development tools |
US7243193B2 (en) * | 2004-05-27 | 2007-07-10 | Silverbrook Research Pty Ltd | Storage of program code in arbitrary locations in memory |
US7430650B1 (en) | 2004-06-17 | 2008-09-30 | Richard Ross | Generating a set of pre-fetch address candidates based on popular sets of address and data offset counters |
US7657756B2 (en) | 2004-10-08 | 2010-02-02 | International Business Machines Corporaiton | Secure memory caching structures for data, integrity and version values |
JP2006113689A (ja) | 2004-10-12 | 2006-04-27 | Fujitsu Ltd | バスブリッジ装置およびデータ転送方法 |
US7688838B1 (en) | 2004-10-19 | 2010-03-30 | Broadcom Corporation | Efficient handling of work requests in a network interface device |
US8332653B2 (en) | 2004-10-22 | 2012-12-11 | Broadcom Corporation | Secure processing environment |
US7496735B2 (en) | 2004-11-22 | 2009-02-24 | Strandera Corporation | Method and apparatus for incremental commitment to architectural state in a microprocessor |
US20060143689A1 (en) | 2004-12-21 | 2006-06-29 | Docomo Communications Laboratories Usa, Inc. | Information flow enforcement for RISC-style assembly code |
US8732856B2 (en) | 2004-12-30 | 2014-05-20 | Oracle International Corporation | Cross-domain security for data vault |
US7831570B2 (en) | 2004-12-30 | 2010-11-09 | Oracle International Corporation | Mandatory access control label security |
US7574536B2 (en) | 2005-04-22 | 2009-08-11 | Sun Microsystems, Inc. | Routing direct memory access requests using doorbell addresses |
US7707387B2 (en) * | 2005-06-01 | 2010-04-27 | Microsoft Corporation | Conditional execution via content addressable memory and parallel computing execution model |
US20070006294A1 (en) | 2005-06-30 | 2007-01-04 | Hunter G K | Secure flow control for a data flow in a computer and data flow in a computer network |
JP4519738B2 (ja) | 2005-08-26 | 2010-08-04 | 株式会社東芝 | メモリアクセス制御装置 |
US8166404B2 (en) | 2005-10-04 | 2012-04-24 | Disney Enterprises, Inc. | System and/or method for authentication and/or authorization |
US8516193B1 (en) | 2006-03-30 | 2013-08-20 | Pegasystems Inc. | Techniques for content-based caching in a computer system |
US7581064B1 (en) * | 2006-04-24 | 2009-08-25 | Vmware, Inc. | Utilizing cache information to manage memory access and cache utilization |
US7434002B1 (en) * | 2006-04-24 | 2008-10-07 | Vmware, Inc. | Utilizing cache information to manage memory access and cache utilization |
JP4899616B2 (ja) | 2006-04-28 | 2012-03-21 | ソニー株式会社 | 変調装置および方法、プログラム、並びに記録媒体 |
US8245199B2 (en) * | 2006-05-05 | 2012-08-14 | International Business Machines Corporation | Selectively marking and executing instrumentation code |
US20080052488A1 (en) | 2006-05-10 | 2008-02-28 | International Business Machines Corporation | Method for a Hash Table Lookup and Processor Cache |
US20080016547A1 (en) | 2006-07-11 | 2008-01-17 | International Business Machines Corporation | System and method for security planning with hard security constraints |
US8301870B2 (en) * | 2006-07-27 | 2012-10-30 | International Business Machines Corporation | Method and apparatus for fast synchronization and out-of-order execution of instructions in a meta-program based computing system |
US8470445B2 (en) | 2006-09-20 | 2013-06-25 | Mitsubishi Rayon Co., Ltd. | Resin laminate, method for production thereof, and transfer film for use in the production of resin laminate |
US7594079B2 (en) * | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
US20080083298A1 (en) | 2006-10-10 | 2008-04-10 | Chu-Fu Lin | Counter weight flywheel |
US8266702B2 (en) | 2006-10-31 | 2012-09-11 | Microsoft Corporation | Analyzing access control configurations |
US7793166B2 (en) * | 2006-11-27 | 2010-09-07 | Emc Corporation | Methods and systems for recovering meta-data in a cache memory after a corruption event |
US8132259B2 (en) | 2007-01-04 | 2012-03-06 | International Business Machines Corporation | System and method for security planning with soft security constraints |
US8677457B2 (en) | 2007-02-09 | 2014-03-18 | Marvell World Trade Ltd. | Security for codes running in non-trusted domains in a processor core |
US7945921B2 (en) | 2007-03-01 | 2011-05-17 | Microsoft Corporation | Cross application domain late binding to non-local types |
US8364910B2 (en) | 2007-03-08 | 2013-01-29 | Daniel Shawcross Wilkerson | Hard object: hardware protection for software objects |
JP5100176B2 (ja) | 2007-03-29 | 2012-12-19 | 株式会社東芝 | マルチプロセッサシステム |
US7813342B2 (en) | 2007-03-26 | 2010-10-12 | Gadelrab Serag | Method and apparatus for writing network packets into computer memory |
US7640420B2 (en) | 2007-04-02 | 2009-12-29 | Intel Corporation | Pre-fetch apparatus |
GB2448149B (en) * | 2007-04-03 | 2011-05-18 | Advanced Risc Mach Ltd | Protected function calling |
US7644044B2 (en) | 2007-04-04 | 2010-01-05 | Sony Corporation | Systems and methods to distribute content over a network |
NO326590B1 (no) | 2007-04-16 | 2009-01-19 | Kubekit As | Fremgangsmate og anordning for verifikasjon av informasjonstilgang i IKT-system med flere sikkerhetsdimensjoner og sikkerhetsniva. |
US8001390B2 (en) | 2007-05-09 | 2011-08-16 | Sony Computer Entertainment Inc. | Methods and apparatus for secure programming and storage of data using a multiprocessor in a trusted mode |
US8423720B2 (en) | 2007-05-10 | 2013-04-16 | International Business Machines Corporation | Computer system, method, cache controller and computer program for caching I/O requests |
US8561061B2 (en) * | 2007-05-14 | 2013-10-15 | Vmware, Inc. | Adaptive dynamic selection and application of multiple virtualization techniques |
US7933889B2 (en) | 2007-05-15 | 2011-04-26 | Palo Alto Research Center Incorporated | Method and system for metadata-driven document management and access control |
US7975109B2 (en) | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
US20080301471A1 (en) | 2007-05-31 | 2008-12-04 | Marc Demarest | Systems and methods in electronic evidence management for creating and maintaining a chain of custody |
EP2160734A4 (en) | 2007-06-18 | 2010-08-25 | Synergy Sports Technology Llc | SYSTEM AND METHOD FOR EDITING, MARKING AND INDEXING DISTRIBUTED AND PARALLEL VIDEOS |
US7975107B2 (en) | 2007-06-22 | 2011-07-05 | Microsoft Corporation | Processor cache management with software input via an intermediary |
US20090006519A1 (en) | 2007-06-29 | 2009-01-01 | Microsoft Corporation | Managing a computing environment |
US7913172B2 (en) | 2007-09-01 | 2011-03-22 | International Business Machines Corporation | Fine-grained, label-based, XML access control model |
US8131663B1 (en) | 2007-10-12 | 2012-03-06 | Bonamy Taylor | Apparatus for generating software logic rules by flowchart design |
US7921260B2 (en) * | 2007-10-24 | 2011-04-05 | International Business Machines Corporation | Preferred write-mostly data cache replacement policies |
US7793049B2 (en) | 2007-10-30 | 2010-09-07 | International Business Machines Corporation | Mechanism for data cache replacement based on region policies |
US20090144388A1 (en) * | 2007-11-08 | 2009-06-04 | Rna Networks, Inc. | Network with distributed shared memory |
US8782384B2 (en) * | 2007-12-20 | 2014-07-15 | Advanced Micro Devices, Inc. | Branch history with polymorphic indirect branch information |
US8880483B2 (en) | 2007-12-21 | 2014-11-04 | Sandisk Technologies Inc. | System and method for implementing extensions to intelligently manage resources of a mass storage system |
US20090178102A1 (en) | 2008-01-04 | 2009-07-09 | Khaled Alghathbar | Implementing Security Policies in Software Development Tools |
US8306987B2 (en) | 2008-04-03 | 2012-11-06 | Ofer Ber | System and method for matching search requests and relevant data |
GB0811422D0 (en) * | 2008-06-20 | 2008-07-30 | Symbian Software Ltd | Efficient caching |
US8196213B2 (en) | 2008-07-11 | 2012-06-05 | Microsoft Corporation | Verification of un-trusted code for consumption on an insecure device |
EP2148212B1 (en) | 2008-07-24 | 2019-08-21 | Toshiba Medical Systems Corporation | Magnetic resonance imaging apparatus for contrast enhancement of images |
TWI419178B (zh) | 2008-07-31 | 2013-12-11 | Sumitomo Electric Industries | 差動傳輸信號電纜及包含該差動傳輸信號電纜之複合電纜 |
WO2010019916A1 (en) | 2008-08-14 | 2010-02-18 | The Trustees Of Princeton University | Hardware trust anchors in sp-enabled processors |
US8181005B2 (en) * | 2008-09-05 | 2012-05-15 | Advanced Micro Devices, Inc. | Hybrid branch prediction device with sparse and dense prediction caches |
US8332909B2 (en) | 2008-12-16 | 2012-12-11 | Microsoft Corporation | Automated software restriction policy rule generation |
DE102009058346A1 (de) | 2008-12-24 | 2010-07-22 | Johnson Electric S.A. | Universalmotor |
US8806101B2 (en) * | 2008-12-30 | 2014-08-12 | Intel Corporation | Metaphysical address space for holding lossy metadata in hardware |
US8190832B2 (en) * | 2009-01-29 | 2012-05-29 | International Business Machines Corporation | Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata |
US8335754B2 (en) | 2009-03-06 | 2012-12-18 | Tagged, Inc. | Representing a document using a semantic structure |
US8176282B2 (en) * | 2009-03-11 | 2012-05-08 | Applied Micro Circuits Corporation | Multi-domain management of a cache in a processor system |
US20100250729A1 (en) | 2009-03-30 | 2010-09-30 | Morris Robert P | Method and System For Providing Access To Metadata Of A Network Accessible Resource |
US8332350B2 (en) | 2009-04-08 | 2012-12-11 | Titus Inc. | Method and system for automated security access policy for a document management system |
US8370577B2 (en) * | 2009-06-26 | 2013-02-05 | Microsoft Corporation | Metaphysically addressed cache metadata |
US8225030B2 (en) | 2009-09-30 | 2012-07-17 | Dell Products L.P. | Systems and methods for using a page table in an information handling system comprising a semiconductor storage device |
US8635415B2 (en) | 2009-09-30 | 2014-01-21 | Intel Corporation | Managing and implementing metadata in central processing unit using register extensions |
JP2011095852A (ja) * | 2009-10-27 | 2011-05-12 | Toshiba Corp | キャッシュメモリ制御回路 |
AU2010322819B2 (en) | 2009-11-30 | 2014-11-27 | Bae Systems Plc | Processing network traffic |
US9087200B2 (en) | 2009-12-22 | 2015-07-21 | Intel Corporation | Method and apparatus to provide secure application execution |
US8627042B2 (en) | 2009-12-30 | 2014-01-07 | International Business Machines Corporation | Data parallel function call for determining if called routine is data parallel |
US20110219424A1 (en) | 2010-03-05 | 2011-09-08 | Microsoft Corporation | Information protection using zones |
WO2011108695A1 (ja) | 2010-03-05 | 2011-09-09 | 日本電気株式会社 | 並列データ処理システム、並列データ処理方法及びプログラム |
US8954418B2 (en) | 2010-05-14 | 2015-02-10 | Sap Se | Performing complex operations in a database using a semantic layer |
US8271447B1 (en) | 2010-06-18 | 2012-09-18 | Emc International Company | Mirroring metadata in a continuous data protection environment |
US8732697B2 (en) | 2010-08-04 | 2014-05-20 | Premkumar Jonnala | System, method and apparatus for managing applications on a device |
GB2483907A (en) * | 2010-09-24 | 2012-03-28 | Advanced Risc Mach Ltd | Privilege level switching for data processing circuitry when in a debug mode |
US8738860B1 (en) | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
US8819225B2 (en) | 2010-11-15 | 2014-08-26 | George Mason Research Foundation, Inc. | Hardware-assisted integrity monitor |
JP5717864B2 (ja) * | 2010-11-16 | 2015-05-13 | インテル・コーポレーション | データ記憶システムに用いるエンドポイントキャッシュ |
US9934166B2 (en) * | 2010-12-10 | 2018-04-03 | Daniel Shawcross Wilkerson | Hard object: constraining control flow and providing lightweight kernel crossings |
US20120151184A1 (en) * | 2010-12-10 | 2012-06-14 | Daniel Shawcross Wilkerson | Hard object: constraining control flow and providing lightweight kernel crossings |
US9218278B2 (en) * | 2010-12-13 | 2015-12-22 | SanDisk Technologies, Inc. | Auto-commit memory |
US9047178B2 (en) * | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
WO2012083308A2 (en) | 2010-12-17 | 2012-06-21 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
US9792472B1 (en) | 2013-03-14 | 2017-10-17 | Impinj, Inc. | Tag-handle-based authentication of RFID readers |
US8966182B2 (en) | 2011-02-08 | 2015-02-24 | International Business Machines Corporation | Software and hardware managed dual rule bank cache for use in a pattern matching accelerator |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US8996807B2 (en) | 2011-02-15 | 2015-03-31 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a multi-level cache |
US8875170B1 (en) | 2011-02-18 | 2014-10-28 | Isaac S. Daniel | Content roaming system and method |
US8949270B2 (en) | 2011-03-10 | 2015-02-03 | Salesforce.Com, Inc. | Methods and systems for processing social media data |
US20180107591A1 (en) | 2011-04-06 | 2018-04-19 | P4tents1, LLC | System, method and computer program product for fetching data between an execution of a plurality of threads |
US10114477B2 (en) | 2011-07-14 | 2018-10-30 | Samsung Electronics Co., Ltd. | Display device and method thereof |
US8955111B2 (en) | 2011-09-24 | 2015-02-10 | Elwha Llc | Instruction set adapted for security risk monitoring |
US9219752B2 (en) | 2011-08-26 | 2015-12-22 | Hewlett-Packard Development Company, L.P. | Data leak prevention systems and methods |
US9329869B2 (en) * | 2011-10-03 | 2016-05-03 | International Business Machines Corporation | Prefix computer instruction for compatibily extending instruction functionality |
US9753858B2 (en) * | 2011-11-30 | 2017-09-05 | Advanced Micro Devices, Inc. | DRAM cache with tags and data jointly stored in physical rows |
US20130160775A1 (en) | 2011-12-21 | 2013-06-27 | University Of Technology, Sidney | Method and apparatus for lower back pain relief |
US9251052B2 (en) | 2012-01-12 | 2016-02-02 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer |
US10102117B2 (en) | 2012-01-12 | 2018-10-16 | Sandisk Technologies Llc | Systems and methods for cache and storage device coordination |
TWI453608B (zh) | 2012-02-03 | 2014-09-21 | Chunghwa Telecom Co Ltd | System and method for managing a large number of multiple data |
US8966204B2 (en) | 2012-02-29 | 2015-02-24 | Hewlett-Packard Development Company, L.P. | Data migration between memory locations |
US9208082B1 (en) * | 2012-03-23 | 2015-12-08 | David R. Cheriton | Hardware-supported per-process metadata tags |
WO2013147865A1 (en) | 2012-03-30 | 2013-10-03 | Intel Corporation | A mechanism for saving and retrieving micro-architecture context |
US9075710B2 (en) * | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US10474584B2 (en) * | 2012-04-30 | 2019-11-12 | Hewlett Packard Enterprise Development Lp | Storing cache metadata separately from integrated circuit containing cache controller |
US8874850B1 (en) | 2012-05-10 | 2014-10-28 | Netapp, Inc. | Hierarchically tagged cache |
US8898376B2 (en) * | 2012-06-04 | 2014-11-25 | Fusion-Io, Inc. | Apparatus, system, and method for grouping data stored on an array of solid-state storage elements |
US8909879B2 (en) | 2012-06-11 | 2014-12-09 | International Business Machines Corporation | Counter-based entry invalidation for metadata previous write queue |
US8826391B2 (en) | 2012-07-02 | 2014-09-02 | Freescale Semiconductor, Inc. | Virtualized trusted descriptors |
US8572410B1 (en) | 2012-07-18 | 2013-10-29 | Freescale Semiconductor, Inc. | Virtualized protected storage |
US10305937B2 (en) | 2012-08-02 | 2019-05-28 | CellSec, Inc. | Dividing a data processing device into separate security domains |
US9367480B2 (en) * | 2012-08-07 | 2016-06-14 | Dell Products L.P. | System and method for updating data in a cache |
US20140047183A1 (en) * | 2012-08-07 | 2014-02-13 | Dell Products L.P. | System and Method for Utilizing a Cache with a Virtual Machine |
EP2885946A4 (en) | 2012-08-17 | 2016-06-29 | Intel Corp | MULTICANAL POWER CONTROL |
US20140109176A1 (en) | 2012-10-15 | 2014-04-17 | Citrix Systems, Inc. | Configuring and providing profiles that manage execution of mobile applications |
US9098417B2 (en) | 2012-12-13 | 2015-08-04 | Advanced Micro Devices, Inc. | Partitioning caches for sub-entities in computing devices |
US9183055B2 (en) | 2013-02-07 | 2015-11-10 | Advanced Micro Devices, Inc. | Selecting a resource from a set of resources for performing an operation |
US9965502B2 (en) | 2013-02-27 | 2018-05-08 | Hitachi Vantara Corporation | Content class for object storage indexing system |
US8959657B2 (en) | 2013-03-14 | 2015-02-17 | Appsense Limited | Secure data management |
US9569612B2 (en) | 2013-03-14 | 2017-02-14 | Daniel Shawcross Wilkerson | Hard object: lightweight hardware enforcement of encapsulation, unforgeability, and transactionality |
US9165078B2 (en) | 2013-03-14 | 2015-10-20 | International Business Machines Corporation | Row-based data filtering at a database level |
US9298911B2 (en) * | 2013-03-15 | 2016-03-29 | Intel Corporation | Method, apparatus, system, and computer readable medium for providing apparatus security |
US9037811B2 (en) | 2013-03-15 | 2015-05-19 | International Business Machines Corporation | Tagging in memory control unit (MCU) |
KR101501462B1 (ko) | 2013-06-10 | 2015-03-11 | 이용재 | 통합 데이터 객체 관리 시스템 및 그 방법 |
US9734080B2 (en) * | 2013-08-08 | 2017-08-15 | Nxp Usa, Inc. | Cache organization and method |
KR20160043029A (ko) | 2013-08-12 | 2016-04-20 | 그라파이트 소프트웨어 코포레이션 | 보안 인증 및 암호화된 도메인들로의 스위칭 |
US10185584B2 (en) * | 2013-08-20 | 2019-01-22 | Teleputers, Llc | System and method for self-protecting data |
US9680738B2 (en) | 2013-09-15 | 2017-06-13 | Nicira, Inc. | Tracking prefixes of values associated with different rules to generate flows |
US9244827B2 (en) | 2013-09-25 | 2016-01-26 | Intel Corporation | Store address prediction for memory disambiguation in a processing device |
WO2015047295A1 (en) | 2013-09-27 | 2015-04-02 | Hewlett-Packard Development Company, L.P. | Application control flow models |
US9507589B2 (en) | 2013-11-07 | 2016-11-29 | Red Hat, Inc. | Search based content inventory comparison |
GB2518022B (en) | 2014-01-17 | 2015-09-23 | Imagination Tech Ltd | Stack saved variable value prediction |
US9411747B2 (en) * | 2014-02-04 | 2016-08-09 | Freescale Semiconductor, Inc. | Dynamic subroutine stack protection |
US10320676B2 (en) | 2014-02-28 | 2019-06-11 | Cisco Technology, Inc. | Smarter policy decisions based on metadata in data flows |
US9323684B2 (en) | 2014-03-21 | 2016-04-26 | Intel Corporation | Dynamic cache and memory allocation for memory subsystems |
US9245123B1 (en) | 2014-05-07 | 2016-01-26 | Symantec Corporation | Systems and methods for identifying malicious files |
JP6287571B2 (ja) | 2014-05-20 | 2018-03-07 | 富士通株式会社 | 演算処理装置、情報処理装置、及び、演算処理装置の制御方法 |
US9489532B2 (en) | 2014-05-28 | 2016-11-08 | Siemens Product Lifecycle Management Software Inc. | Fast access rights checking of configured structure data |
TW201600997A (zh) | 2014-06-30 | 2016-01-01 | 萬國商業機器公司 | 於一集中式管理環境中動態產生一策略實施點之封包檢視策略的方法、資訊設備及電腦程式產品 |
US9336047B2 (en) | 2014-06-30 | 2016-05-10 | International Business Machines Corporation | Prefetching of discontiguous storage locations in anticipation of transactional execution |
US9992298B2 (en) | 2014-08-14 | 2018-06-05 | International Business Machines Corporation | Relationship-based WAN caching for object stores |
US9525606B1 (en) | 2014-09-04 | 2016-12-20 | HCA Holdings, Inc. | Differential processing of data streams based on protocols |
EP2993606A1 (en) * | 2014-09-05 | 2016-03-09 | Axiomatics AB | Provisioning system-level permissions using attribute-based access control policies |
US9483250B2 (en) | 2014-09-15 | 2016-11-01 | International Business Machines Corporation | Systems management based on semantic models and low-level runtime state |
US9436847B2 (en) | 2014-09-26 | 2016-09-06 | Intel Corporation | Cryptographic pointer address encoding |
WO2016053282A1 (en) | 2014-09-30 | 2016-04-07 | Hewlett Packard Enterprise Development Lp | String property labels for static analysis |
US9767272B2 (en) | 2014-10-20 | 2017-09-19 | Intel Corporation | Attack Protection for valid gadget control transfers |
US10078763B2 (en) * | 2014-11-19 | 2018-09-18 | BAE Systems Information and Electronic Systems Integration Incc | Programmable unit for metadata processing |
US9830162B2 (en) | 2014-12-15 | 2017-11-28 | Intel Corporation | Technologies for indirect branch target security |
US9576147B1 (en) | 2015-01-05 | 2017-02-21 | Amazon Technologies, Inc. | Security policy application through data tagging |
CN104657500A (zh) * | 2015-03-12 | 2015-05-27 | 浪潮集团有限公司 | 一种基于key-value键值对的分布式存储方法 |
US9747218B2 (en) | 2015-03-20 | 2017-08-29 | Mill Computing, Inc. | CPU security mechanisms employing thread-specific protection domains |
US9736185B1 (en) | 2015-04-21 | 2017-08-15 | Infoblox Inc. | DNS or network metadata policy for network control |
US9846648B2 (en) | 2015-05-11 | 2017-12-19 | Intel Corporation | Create page locality in cache controller cache allocation |
US10073786B2 (en) * | 2015-05-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for compute enabled cache |
US9910611B2 (en) | 2015-05-29 | 2018-03-06 | Intel Corporation | Access control for memory protection key architecture |
US9713216B2 (en) | 2015-06-05 | 2017-07-18 | Zyntony, Inc. | Multi-section portable electronic torch |
US9703956B1 (en) | 2015-06-08 | 2017-07-11 | Symantec Corporation | Systems and methods for categorizing virtual-machine-aware applications for further analysis |
US10469464B2 (en) | 2015-06-09 | 2019-11-05 | Intel Corporation | Self-configuring key management system for an internet of things network |
US10114958B2 (en) | 2015-06-16 | 2018-10-30 | Microsoft Technology Licensing, Llc | Protected regions |
US10642753B1 (en) | 2015-06-30 | 2020-05-05 | Fireeye, Inc. | System and method for protecting a software component running in virtual machine using a virtualization layer |
US10073977B2 (en) | 2015-07-20 | 2018-09-11 | Intel Corporation | Technologies for integrity, anti-replay, and authenticity assurance for I/O data |
US9846716B1 (en) | 2015-07-28 | 2017-12-19 | HCA Holdings, Inc. | Deidentification of production data |
US11381566B2 (en) | 2015-08-12 | 2022-07-05 | Red Hat, Inc. | Isolating network resources in a virtualized environment |
US10586076B2 (en) | 2015-08-24 | 2020-03-10 | Acronis International Gmbh | System and method for controlling access to OS resources |
US20170083338A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Prefetching associated with predicated load instructions |
US9612967B1 (en) | 2015-09-25 | 2017-04-04 | Dell Products, L.P. | Cache load balancing by reclaimable block migration |
US9507598B1 (en) | 2015-12-15 | 2016-11-29 | International Business Machines Corporation | Auxiliary branch prediction with usefulness tracking |
US10936713B2 (en) | 2015-12-17 | 2021-03-02 | The Charles Stark Draper Laboratory, Inc. | Techniques for metadata processing |
US10235176B2 (en) | 2015-12-17 | 2019-03-19 | The Charles Stark Draper Laboratory, Inc. | Techniques for metadata processing |
US10133866B1 (en) | 2015-12-30 | 2018-11-20 | Fireeye, Inc. | System and method for triggering analysis of an object for malware in response to modification of that object |
US11709679B2 (en) | 2016-03-31 | 2023-07-25 | Qualcomm Incorporated | Providing load address predictions using address prediction tables based on load path history in processor-based systems |
US10685111B2 (en) | 2016-10-31 | 2020-06-16 | Crowdstrike, Inc. | File-modifying malware detection |
US10409603B2 (en) | 2016-12-30 | 2019-09-10 | Intel Corporation | Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory |
US10896100B2 (en) | 2017-03-24 | 2021-01-19 | Commvault Systems, Inc. | Buffered virtual machine replication |
US10503904B1 (en) | 2017-06-29 | 2019-12-10 | Fireeye, Inc. | Ransomware detection and mitigation |
WO2019075758A1 (zh) | 2017-10-20 | 2019-04-25 | 深圳市大疆创新科技有限公司 | 成像控制方法、成像装置和无人机 |
US10635810B2 (en) | 2018-01-31 | 2020-04-28 | Jungle Disk, L.L.C. | Probabilistic anti-encrypting malware protections for cloud-based file systems |
SG11202007272QA (en) | 2018-02-02 | 2020-08-28 | Charles Stark Draper Laboratory Inc | Systems and methods for policy execution processing |
KR20200116970A (ko) | 2018-02-02 | 2020-10-13 | 도버 마이크로시스템즈, 인크. | 메타데이터 처리를 위한 명령어를 변환시키기 위한 시스템 및 방법 |
WO2019152805A1 (en) | 2018-02-02 | 2019-08-08 | Dover Microsystems, Inc. | System and method for translating mapping policy into code |
US11307854B2 (en) | 2018-02-07 | 2022-04-19 | Intel Corporation | Memory write log storage processors, methods, systems, and instructions |
US11417109B1 (en) | 2018-03-20 | 2022-08-16 | Amazon Technologies, Inc. | Network-based vehicle event detection system |
US10984122B2 (en) | 2018-04-13 | 2021-04-20 | Sophos Limited | Enterprise document classification |
US10776482B2 (en) | 2018-05-18 | 2020-09-15 | International Business Machines Corporation | Automated virtual machine integrity checks |
US10922411B2 (en) | 2018-06-20 | 2021-02-16 | Malwarebytes Inc. | Intelligent event collection for cloud-based malware detection |
US10970396B2 (en) | 2018-06-20 | 2021-04-06 | Malwarebytes Inc. | Intelligent event collection for rolling back an endpoint state in response to malware |
US10424043B1 (en) * | 2018-07-02 | 2019-09-24 | Intel Corporation | Efficiently enqueuing workloads from user mode to hardware across privilege domains |
WO2020097177A1 (en) | 2018-11-06 | 2020-05-14 | Dover Microsystems, Inc. | Systems and methods for stalling host processor |
US11360704B2 (en) * | 2018-12-21 | 2022-06-14 | Micron Technology, Inc. | Multiplexed signal development in a memory device |
WO2020150351A1 (en) | 2019-01-18 | 2020-07-23 | Dover Microsystems, Inc. | Systems and methods for metadata classification |
US11522905B2 (en) | 2019-09-11 | 2022-12-06 | International Business Machines Corporation | Malicious virtual machine detection |
US12079197B2 (en) | 2019-10-18 | 2024-09-03 | Dover Microsystems, Inc. | Systems and methods for updating metadata |
WO2021092138A1 (en) | 2019-11-06 | 2021-05-14 | Dover Microsystems, Inc. | Systems and methods for improving efficiency of metadata processing |
-
2016
- 2016-05-31 US US15/168,689 patent/US10235176B2/en active Active
- 2016-12-12 US US16/062,796 patent/US11507373B2/en active Active
- 2016-12-12 JP JP2018550654A patent/JP7053486B2/ja active Active
- 2016-12-12 EP EP16820481.6A patent/EP3387578A1/en active Pending
- 2016-12-12 CN CN201680081309.5A patent/CN109074447A/zh active Pending
- 2016-12-12 CN CN201680081293.8A patent/CN108885660B/zh active Active
- 2016-12-12 SG SG11201804733YA patent/SG11201804733YA/en unknown
- 2016-12-12 SG SG11201804696RA patent/SG11201804696RA/en unknown
- 2016-12-12 KR KR1020187020288A patent/KR102572262B1/ko active IP Right Grant
- 2016-12-12 JP JP2018531549A patent/JP7000326B2/ja active Active
- 2016-12-12 KR KR1020187020285A patent/KR102610802B1/ko active IP Right Grant
- 2016-12-12 EP EP16820480.8A patent/EP3387577B1/en active Active
- 2016-12-12 WO PCT/US2016/066194 patent/WO2017106103A1/en active Application Filing
- 2016-12-12 WO PCT/US2016/066188 patent/WO2017106101A2/en active Application Filing
-
2017
- 2017-02-07 US US15/426,098 patent/US9785440B2/en active Active
- 2017-06-16 US US15/624,878 patent/US10642616B2/en active Active
- 2017-09-05 US US15/695,541 patent/US10261794B2/en active Active
-
2018
- 2018-06-07 US US16/002,642 patent/US10725778B2/en active Active
- 2018-06-07 US US16/002,987 patent/US10521230B2/en active Active
- 2018-06-07 US US16/002,757 patent/US10754650B2/en active Active
- 2018-06-07 US US16/002,957 patent/US10545760B2/en active Active
-
2019
- 2019-01-24 US US16/256,640 patent/US11182162B2/en active Active
- 2019-11-14 US US16/684,172 patent/US11340902B2/en active Active
-
2020
- 2020-06-18 US US16/905,680 patent/US11635960B2/en active Active
- 2020-07-15 US US16/929,692 patent/US11782714B2/en active Active
-
2021
- 2021-10-26 US US17/452,271 patent/US11720361B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013242633A (ja) * | 2012-05-18 | 2013-12-05 | Nippon Telegr & Teleph Corp <Ntt> | タグ付与装置及びタグ付与方法 |
GB2519608A (en) * | 2013-10-23 | 2015-04-29 | Avecto Ltd | Computer device and method for isolating untrusted content |
Non-Patent Citations (2)
Title |
---|
DHAWAN, UDIT ET AL.: "Architectural Support for Software-Defined Metadata Processing", PROCEEDINGS OF THE TWENTIETH INTERNATIONAL CONFERENCE ON ARCHITECTURAL SUPPORT FOR PROGRAMMING LANGU, JPN7021000756, March 2015 (2015-03-01), pages 487 - 502, ISSN: 0004461376 * |
DHAWAN, UDIT ET AL.: "PUMP: a programmable unit for metadata processing", PROCEEDINGS OF THE THIRD WORKSHOP ON HARDWARE AND ARCHITECTURAL SUPPORT FOR SECURITY AND PRIVACY (HA, JPN7021000755, June 2016 (2016-06-01), pages 1 - 8, ISSN: 0004461375 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230084495A1 (en) * | 2021-09-14 | 2023-03-16 | Apple Inc. | Verifiable machine code |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7000326B2 (ja) | メタデータ処理のための技法 | |
US10936713B2 (en) | Techniques for metadata processing | |
Joannou | High-performance memory safety: optimizing the CHERI capability machine | |
KR102514351B1 (ko) | 메타데이터 처리 기술 | |
Joannou | High-performance memory safety-Optimizing the CHERI capability machine | |
Milenkovic | Architectures for run-time verification of code integrity |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20191212 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20191212 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210315 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210615 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20211129 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211223 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7000326 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |