quite a lot update

This commit is contained in:
ridethepig 2023-05-04 10:54:25 +08:00
parent c93527fb07
commit 47053d35da
9 changed files with 3524 additions and 14 deletions

File diff suppressed because it is too large Load Diff

View File

@ -31,5 +31,467 @@
:height 1267.1999999999998}),
:page 2},
:content {:text "Introduction"},
:properties {:color "yellow"}}
{:id #uuid "64511829-234d-45a3-9d1c-f50d60466704",
:page 2,
:position {:bounding {:x1 911.9144897460938,
:y1 1145.015625,
:x2 1134.9884033203125,
:y2 1175.015625,
:width 1387.2,
:height 1795.2},
:rects ({:x1 911.9144897460938,
:y1 1145.015625,
:x2 1134.9884033203125,
:y2 1175.015625,
:width 1387.2,
:height 1795.2}),
:page 2},
:content {:text "modern storage devices"},
:properties {:color "yellow"}}
{:id #uuid "64511979-cee9-4f46-87ba-6bbfe86bf0a4",
:page 2,
:position {:bounding {:x1 0,
:y1 1290.3125,
:x2 1264.7996826171875,
:y2 1585.734375,
:width 1387.2,
:height 1795.2},
:rects ({:x1 0,
:y1 1290.3125,
:x2 0,
:y2 1314.3125,
:width 1387.2,
:height 1795.2}
{:x1 743.109375,
:y1 1528.625,
:x2 1264.7996826171875,
:y2 1558.625,
:width 1387.2,
:height 1795.2}
{:x1 719.703125,
:y1 1555.734375,
:x2 780.1452026367188,
:y2 1585.734375,
:width 1387.2,
:height 1795.2}),
:page 2},
:content {:text "Previous approaches are limited to atomicity unit of CPU writes."},
:properties {:color "yellow"}}
{:id #uuid "64511f4c-4338-41ad-9264-263ed5a08bf4",
:page 3,
:position {:bounding {:x1 0,
:y1 278.09375,
:x2 670.4557495117188,
:y2 754.328125,
:width 1387.2,
:height 1795.2},
:rects ({:x1 0,
:y1 278.09375,
:x2 0,
:y2 302.09375,
:width 1387.2,
:height 1795.2}
{:x1 341.8261413574219,
:y1 697.21875,
:x2 670.4557495117188,
:y2 727.21875,
:width 1387.2,
:height 1795.2}
{:x1 122.390625,
:y1 724.328125,
:x2 250.2345428466797,
:y2 754.328125,
:width 1387.2,
:height 1795.2}),
:page 3},
:content {:text "enhanced asynchronous DRAM refresh (eADR) t"},
:properties {:color "yellow"}}
{:id #uuid "6451204b-d1b8-46ed-8ec9-3a7c2d05244e",
:page 3,
:position {:bounding {:x1 0,
:y1 327.875,
:x2 627.4405975341797,
:y2 786,
:width 1305.6,
:height 1689.6},
:rects ({:x1 0,
:y1 327.875,
:x2 0,
:y2 351.875,
:width 1305.6,
:height 1689.6}
{:x1 197.34849548339844,
:y1 732.484375,
:x2 627.4405975341797,
:y2 760.484375,
:width 1305.6,
:height 1689.6}
{:x1 115.1875,
:y1 758,
:x2 373.80694580078125,
:y2 786,
:width 1305.6,
:height 1689.6}),
:page 3},
:content {:text " guarantee the persistence of memory writes once they become globally visible, "},
:properties {:color "yellow"}}
{:id #uuid "6451205e-7f48-43e8-8704-d221d806cc18",
:page 3,
:position {:bounding {:x1 0,
:y1 427.4375,
:x2 627.459716796875,
:y2 940.53125,
:width 1305.6,
:height 1689.6},
:rects ({:x1 0,
:y1 427.4375,
:x2 0,
:y2 451.4375,
:width 1305.6,
:height 1689.6}
{:x1 474.9247131347656,
:y1 887.015625,
:x2 627.459716796875,
:y2 915.015625,
:width 1305.6,
:height 1689.6}
{:x1 115.1875,
:y1 912.53125,
:x2 263.9544982910156,
:y2 940.53125,
:width 1305.6,
:height 1689.6}),
:page 3},
:content {:text "everal challenges prevent RTM-PM "},
:properties {:color "yellow"}}
{:id #uuid "64512109-8ab0-49aa-b6a3-1524df0631ef",
:page 3,
:position {:bounding {:x1 261.0550537109375,
:y1 1498.546875,
:x2 544.9708251953125,
:y2 1520.546875,
:width 1305.6,
:height 1689.6},
:rects ({:x1 261.0550537109375,
:y1 1498.546875,
:x2 544.9708251953125,
:y2 1520.546875,
:width 1305.6,
:height 1689.6}),
:page 3},
:content {:text "Hardware-assisted Optimistic Persistence"},
:properties {:color "yellow"}}
{:id #uuid "64512150-84a0-4839-aef6-48bb872fa776",
:page 3,
:position {:bounding {:x1 0,
:y1 553.984375,
:x2 1190.4071044921875,
:y2 932.65625,
:width 1305.6,
:height 1689.6},
:rects ({:x1 978.1332397460938,
:y1 553.984375,
:x2 1190.4071044921875,
:y2 581.984375,
:width 1305.6,
:height 1689.6}
{:x1 678.140625,
:y1 579.484375,
:x2 913.3933715820312,
:y2 607.484375,
:width 1305.6,
:height 1689.6}
{:x1 0,
:y1 908.65625,
:x2 0,
:y2 932.65625,
:width 1305.6,
:height 1689.6}),
:page 3},
:content {:text "HTMFS, a user-space PM file systems base on ZoFS"},
:properties {:color "yellow"}}
{:id #uuid "6451215b-a495-4d6f-9427-f5c0c6685a28",
:page 3,
:position {:bounding {:x1 678.140625,
:y1 1017.8125,
:x2 1024.360107421875,
:y2 1051.8125,
:width 1305.6,
:height 1689.6},
:rects ({:x1 678.140625,
:y1 1017.8125,
:x2 1024.360107421875,
:y2 1051.8125,
:width 1305.6,
:height 1689.6}
{:x1 690.890625,
:y1 1022.8125,
:x2 716.4000244140625,
:y2 1048.3125,
:width 1305.6,
:height 1689.6}),
:page 3},
:content {:text "2 Background and Motivation"},
:properties {:color "yellow"}}
{:id #uuid "645124e7-37ae-404c-bc83-2ae78628767f",
:page 4,
:position {:bounding {:x1 172.53468322753906,
:y1 505.9375,
:x2 614.7741088867188,
:y2 539.9375,
:width 1305.6,
:height 1689.6},
:rects ({:x1 172.53468322753906,
:y1 505.9375,
:x2 614.7741088867188,
:y2 539.9375,
:width 1305.6,
:height 1689.6}),
:page 4},
:content {:text "Persistent Memory and PM File Systems"},
:properties {:color "yellow"}}
{:id #uuid "64526ec1-37e2-4891-bba8-eeb07c6e02d3",
:page 4,
:position {:bounding {:x1 0,
:y1 394.25,
:x2 709.8658447265625,
:y2 989.59375,
:width 1468.8,
:height 1900.8},
:rects ({:x1 0,
:y1 394.25,
:x2 0,
:y2 418.25,
:width 1468.8,
:height 1900.8}
{:x1 0,
:y1 410.84375,
:x2 0,
:y2 434.84375,
:width 1468.8,
:height 1900.8}
{:x1 521.9998168945312,
:y1 901.21875,
:x2 705.8869018554688,
:y2 932.21875,
:width 1468.8,
:height 1900.8}
{:x1 629.453125,
:y1 905.21875,
:x2 705.8869018554688,
:y2 929.125,
:width 1468.8,
:height 1900.8}
{:x1 128.734375,
:y1 929.90625,
:x2 709.8658447265625,
:y2 960.90625,
:width 1468.8,
:height 1900.8}
{:x1 128.734375,
:y1 933.90625,
:x2 709.8658447265625,
:y2 957.8125,
:width 1468.8,
:height 1900.8}
{:x1 129.59375,
:y1 958.59375,
:x2 413.02117919921875,
:y2 989.59375,
:width 1468.8,
:height 1900.8}),
:page 4},
:content {:text "The only difference would be leveraging atomic instructions to provide small updates up to a single cache line"},
:properties {:color "yellow"}}
{:id #uuid "6452709d-6036-4dcd-8821-c106562565fe",
:page 4,
:position {:bounding {:x1 762.90625,
:y1 300.828125,
:x2 1240.3843994140625,
:y2 338.828125,
:width 1468.8,
:height 1900.8},
:rects ({:x1 762.90625,
:y1 300.828125,
:x2 1240.3843994140625,
:y2 338.828125,
:width 1468.8,
:height 1900.8}
{:x1 798.765625,
:y1 305.828125,
:x2 827.4942016601562,
:y2 334.515625,
:width 1468.8,
:height 1900.8}),
:page 4},
:content {:text "2.3 Hardware Transactional Memory"},
:properties {:color "yellow"}}
{:id #uuid "645270e0-2153-4414-8b22-762cfc113c19",
:page 4,
:position {:bounding {:x1 0,
:y1 518.359375,
:x2 1339.2137451171875,
:y2 1082,
:width 1468.8,
:height 1900.8},
:rects ({:x1 762.90625,
:y1 518.359375,
:x2 1339.2137451171875,
:y2 549.359375,
:width 1468.8,
:height 1900.8}
{:x1 762.90625,
:y1 547.046875,
:x2 925.1608276367188,
:y2 578.046875,
:width 1468.8,
:height 1900.8}
{:x1 1006.40625,
:y1 547.046875,
:x2 1046.6761474609375,
:y2 578.046875,
:width 1468.8,
:height 1900.8}
{:x1 1102.828125,
:y1 547.046875,
:x2 1224.8309326171875,
:y2 578.046875,
:width 1468.8,
:height 1900.8}
{:x1 762.90625,
:y1 551.046875,
:x2 1108.796875,
:y2 575.046875,
:width 1468.8,
:height 1900.8}
{:x1 0,
:y1 1058,
:x2 0,
:y2 1082,
:width 1468.8,
:height 1900.8}),
:page 4},
:content {:text "the critical section that wraps the shared memory resources and mark it with xbegin and xend instructions. "},
:properties {:color "yellow"}}
{:id #uuid "64527149-e50e-46c8-990f-0465060f9a5a",
:page 4,
:position {:bounding {:x1 762.90625,
:y1 904.640625,
:x2 920.9835815429688,
:y2 935.640625,
:width 1468.8,
:height 1900.8},
:rects ({:x1 762.90625,
:y1 904.640625,
:x2 920.9835815429688,
:y2 935.640625,
:width 1468.8,
:height 1900.8}),
:page 4},
:content {:text "Conflict aborts."},
:properties {:color "yellow"}}
{:id #uuid "645271fa-ff04-4263-a2f2-d1879c1fb857",
:page 4,
:position {:bounding {:x1 762.90625,
:y1 1118.015625,
:x2 955.517822265625,
:y2 1149.015625,
:width 1468.8,
:height 1900.8},
:rects ({:x1 762.90625,
:y1 1118.015625,
:x2 955.517822265625,
:y2 1149.015625,
:width 1468.8,
:height 1900.8}),
:page 4},
:content {:text "Capacity aborts. "},
:properties {:color "yellow"}}
{:id #uuid "64527248-77dc-4d32-8a2b-737b7329d2e9",
:page 4,
:position {:bounding {:x1 762.90625,
:y1 1245.3125,
:x2 901.3764038085938,
:y2 1276.3125,
:width 1468.8,
:height 1900.8},
:rects ({:x1 762.90625,
:y1 1245.3125,
:x2 901.3764038085938,
:y2 1276.3125,
:width 1468.8,
:height 1900.8}),
:page 4},
:content {:text "Other aborts."},
:properties {:color "yellow"}}
{:id #uuid "64527270-d6d5-4232-98af-c0212ef47511",
:page 4,
:position {:bounding {:x1 762.90625,
:y1 1487.34375,
:x2 1138.2952880859375,
:y2 1525.34375,
:width 1468.8,
:height 1900.8},
:rects ({:x1 762.90625,
:y1 1487.34375,
:x2 1138.2952880859375,
:y2 1525.34375,
:width 1468.8,
:height 1900.8}
{:x1 798.765625,
:y1 1492.34375,
:x2 827.4942016601562,
:y2 1521.03125,
:width 1468.8,
:height 1900.8}),
:page 4},
:content {:text "2.4 HTM in PM File Systems"},
:properties {:color "yellow"}}
{:id #uuid "6452774e-a951-480a-a890-322d30fe3fd0",
:page 5,
:position {:bounding {:x1 129.59375,
:y1 560.4375,
:x2 255.5180206298828,
:y2 598.4375,
:width 1468.8,
:height 1900.8},
:rects ({:x1 129.59375,
:y1 560.4375,
:x2 255.5180206298828,
:y2 598.4375,
:width 1468.8,
:height 1900.8}
{:x1 143.9375,
:y1 565.4375,
:x2 172.66607666015625,
:y2 594.125,
:width 1468.8,
:height 1900.8}),
:page 5},
:content {:text "3 Design"},
:properties {:color "yellow"}}
{:id #uuid "645277dc-272c-4479-9d09-3f178cb77a42",
:page 5,
:position {:bounding {:x1 129.59375,
:y1 1253.6875,
:x2 256.3342590332031,
:y2 1291.6875,
:width 1468.8,
:height 1900.8},
:rects ({:x1 129.59375,
:y1 1253.6875,
:x2 256.3342590332031,
:y2 1291.6875,
:width 1468.8,
:height 1900.8}
{:x1 165.453125,
:y1 1258.6875,
:x2 256.3342590332031,
:y2 1287.375,
:width 1468.8,
:height 1900.8}),
:page 5},
:content {:text "3.1 HOP"},
:properties {:color "yellow"}}],
:extra {:page 2}}
:extra {:page 7}}

View File

@ -3,4 +3,5 @@
- 计组第五章看了快一半,明天应该能看完第五章
- 明天开始把论文看起来
- 抄写编译器前端
- 究极抽象,代码量太大了,抄都不知道从哪里开始抄
- 论语报告完善了一下,估计是不会想再看第二遍了,这东西纯纯的尬写,我也不知道老师怎么看得下去的

4
journals/2023_05_01.md Normal file
View File

@ -0,0 +1,4 @@
- 精神有点恍惚,可能是前两天睡眠不足,本来打算看论文的,结果绷不住了打游戏了
- 终于把第五章看完了啊,第六章可能不会去看了
- 继续抄写编译器前端
- 出去吃了烤肉,感觉不如自助烤肉

3
journals/2023_05_02.md Normal file
View File

@ -0,0 +1,3 @@
- 编译器前端部分的框架姑且算是写完了,接下来就是无聊的堆代码环节
- 模式识别作业写了一半不想写了,明天抄别人的
- 看了看论文

4
journals/2023_05_03.md Normal file
View File

@ -0,0 +1,4 @@
- 作业算是糊完了
- 莫名其妙生病了早上七点肚子疼给整醒了跑了6趟厕所然后睡到中午早上没了
- 吃了点氨酚烷胺又睡了一会,然后抄完了作业把报告写完已经九点了,五一莫名其妙就结束了,不过明天一节课、后天没课的我,结束没结束好像没啥区别
- 继续低效看论文,编译器没动

View File

@ -2165,21 +2165,507 @@ file-path:: ../../../../assets/Computer_Organization_and_Design_1681729306797_0.
hl-page:: 492
hl-color:: yellow
id:: 644e5adc-7d6c-4136-8fa7-7849417949da
- ## Dependable Memory Hierarchy
ls-type:: annotation
hl-page:: 497
hl-color:: yellow
id:: 644dea78-9ad9-4322-a05d-1b30789b85a8
collapsed:: true
- Two states of delivered service: Service accomplishment & Serviced interruption, which means delivered service is the same as/different from specified service
hl-page:: 497
ls-type:: annotation
id:: 644f4473-da2b-4f3c-8d32-89b90b80f0b2
hl-color:: yellow
- Transitions from state 1 to state 2 are caused by **failures**, and transitions from state2 to state 1 are called **restorations**.
hl-page:: 497
ls-type:: annotation
id:: 644f4518-efff-41a8-8445-5b9e2434e9cd
hl-color:: yellow
- Failures can be permanent or intermittent.
ls-type:: annotation
hl-page:: 497
hl-color:: yellow
id:: 644f4535-12cc-4669-bdbe-4d72b5066fae
- Reliability is a measure of the continuous service accomplishment.
hl-page:: 497
ls-type:: annotation
id:: 644f456f-e4bb-44be-8352-ad557cd80060
hl-color:: yellow
- **mean time to failure** (MTTF) and **annual failure rate** (AFR)
hl-page:: 497
ls-type:: annotation
id:: 644f4583-1a89-4136-b6e8-ae34cd452815
hl-color:: yellow
- How long you can use it before it fails
- Service interruption is measured as **mean time to repair** (MTTR).
hl-page:: 498
ls-type:: annotation
id:: 644f45a7-aaf5-4489-bce0-cb66c22f42cf
hl-color:: yellow
- How long to repair it after it fails
- Mean time between failures (MTBF) is simply the sum of MTTF + MTTR
ls-type:: annotation
hl-page:: 498
hl-color:: yellow
id:: 644f4623-bf70-495e-93f7-358fc369d438
- Availability is a measure of service accomplishment with respect to the alternation between accomplishment and interruption. $\text{Avail}=\frac{\text{MTTF}}{\text{MTTF+MTTR}}$
hl-page:: 498
ls-type:: annotation
id:: 644f46aa-3ee6-4b4c-95c5-74c326fd758e
hl-color:: yellow
- To improve MTTF: Fault avoidance, Fault tolerance, Fault forecasting
hl-page:: 498
ls-type:: annotation
id:: 644f4720-89b2-4fd5-813f-1a9f18579745
hl-color:: yellow
- Hamming Code
- **Hamming distance**: the ==minimum number of different bits== between any two ==correct== bit patterns
hl-page:: 499
ls-type:: annotation
id:: 644f47cb-b392-4558-a654-ce01bcf35209
hl-color:: yellow
- **Parity code**: Count the number of 1s in a word, and append a parity bit when written into memory, say 1 for odd 1s and 0 for even 1s. Therefore, the parity of the N+1 bit word should always be even, otherwise, there must be an error.
hl-page:: 499
ls-type:: annotation
id:: 644f48cc-4cf6-4eb8-96e5-93812335f425
hl-color:: yellow
- Actually, a 1-bit parity scheme can detect any odd number of errors; however, the probability of having 3 or 5 errors is much lower than the probability of having 2
hl-page:: 499
ls-type:: annotation
id:: 644f497d-9fb1-4ec1-b8a0-845652868073
hl-color:: yellow
- Hamming Error Correction Code (ECC)
ls-type:: annotation
hl-page:: 499
hl-color:: yellow
id:: 644f49ab-9ec8-46f0-9dcb-86eb1da64df2
- Add extra parity bits to identify the position of the single-bit error, and the word with parity bits has a Hamming distance of 3.
- For 8-bit data word, we need 4 parity bits, respectively placed at the 1,2,4,8th bit of the 12-bit code.
- For larger words, the number of parity bits can be calculated as $p \ge \log_2(p+d+1)$
- See FIGURE 5.24 for detail
hl-page:: 500
ls-type:: annotation
id:: 644f4df8-30ce-44fd-bc9f-973ccbb7fd6f
hl-color:: yellow
- Single error correction and Double error detection
hl-page:: 501
ls-type:: annotation
id:: 644f4e40-7352-4c4a-9a9c-5bdfb79ada0a
hl-color:: yellow
- Make the code's hamming distance 4, by adding a parity bit for the whole code word.
- Also, see the textbook for detail
-
- ## Virtual Machines
ls-type:: annotation
hl-page:: 503
hl-color:: yellow
id:: 644e0550-6991-4b86-9765-612e71bed268
collapsed:: true
- System Virtual Machines: run the same ISA as the native hardware
hl-page:: 503
ls-type:: annotation
id:: 644f511d-3a0f-4204-acd0-40eca3d58610
hl-color:: yellow
- A single computer, running multiple VMs, supporting multiple OSs and they share the hardware
- virtual machine monitor (VMM) or hypervisor
hl-page:: 503
ls-type:: annotation
id:: 644f5195-6bdf-4db1-9e4a-5b4dbc959df6
hl-color:: yellow
- host and guest
ls-type:: annotation
hl-page:: 503
hl-color:: yellow
id:: 644f51a9-f75b-4d73-91dd-89fbaa91ffe9
- protection, managing software, managing hardware
- The cost of processor virtualization depends on the workload.
hl-page:: 504
ls-type:: annotation
id:: 644f5241-37dc-4efa-acc9-9ae8739b7e19
hl-color:: yellow
- User-level processor-bound programs have 0 virtualization overhead, native speed
hl-page:: 504
ls-type:: annotation
id:: 644f5287-cac6-46c8-ad60-8cee1ca0c57c
hl-color:: yellow
- I/O-intensive workloads, also OS-intensive, have high virtualization overhead. As many system calls and privileged instructions.
hl-page:: 504
ls-type:: annotation
id:: 644f52a8-98fb-466b-92cf-7c0f942382b2
hl-color:: yellow
- Requirements of a Virtual Machine Monitor
ls-type:: annotation
hl-page:: 505
hl-color:: yellow
id:: 644f52db-8deb-4e8b-8a11-e59b2bbfbe26
- Guest software should behave on a VM exactly as if it were running on the native hardware,
ls-type:: annotation
hl-page:: 505
hl-color:: yellow
id:: 644f533e-a31c-4916-bb47-2c97eae78310
- Guest software should not be able to change allocation of real system resources directly.
ls-type:: annotation
hl-page:: 505
hl-color:: yellow
id:: 644f5340-0e7e-4ea2-b337-2779d4092da5
- At least two processor modes, system and user.
ls-type:: annotation
hl-page:: 505
hl-color:: yellow
id:: 644f5401-cfe8-439b-af2e-d91bc6dae442
- A privileged subset of instructions that is available only in system mode; all system resources must be controllable only via these instructions.
ls-type:: annotation
hl-page:: 505
hl-color:: yellow
id:: 644f5403-7aab-4e4e-ae71-87aa2d22bbbd
- ## Virtual Memory
ls-type:: annotation
hl-page:: 506
hl-color:: yellow
id:: 644f4178-a1ca-40e3-b488-3ce044954e46
collapsed:: true
- Making Address Translation Fast: the TLB
ls-type:: annotation
hl-page:: 517
hl-color:: yellow
id:: 644f5d06-3450-4d12-96e5-374712790d9e
collapsed:: true
- TLB entry
- Tag holds a portion of the VPN, and data entry holds a PPN.
hl-page:: 517
ls-type:: annotation
id:: 644f5d6e-0c4e-48ad-9284-7b6247cc3d15
hl-color:: yellow
- TLB will need to include other status bits, such as the dirty and the reference bits.
hl-page:: 518
ls-type:: annotation
id:: 644f5d87-be05-4020-a8e8-d23c4a0fcfa4
hl-color:: yellow
- Cache-like considerations
- Write policy: write-back, since the miss rate is low
- Associativity: decided by the number of TLB entries
- Replacement: many systems provide some support for random replacement, because LRU are expensive to implement especially by hardware
hl-page:: 518
ls-type:: annotation
id:: 644f5f4f-8fce-4a04-9ccc-eb988f0e3ed3
hl-color:: yellow
- The Intrinsity FastMATH TLB
ls-type:: annotation
hl-page:: 519
hl-color:: yellow
id:: 644f60f0-680e-4aa0-a0de-165342178045
- 4K page and 32-bit AS lead to 20-bit VPN. Thus 20-bit tag, 20-bit data, and some other bookkeeping bits
- 16-way fully associative TLB, compare VPN against all tags
- On TLB miss, MIPS hardware saves the page number of the reference in a special register and raise exception.
hl-page:: 519
ls-type:: annotation
id:: 644f61e2-eb58-44d5-8b89-b55c3708f25a
hl-color:: yellow
- The hardware maintains an index that indicates the recommended entry to replace, which is chosen randomly.
hl-page:: 519
ls-type:: annotation
id:: 644f62bd-6a29-40bc-a634-15fed6bc1ec9
hl-color:: yellow
- TLB miss routine in OS indexes the table with relevant registers.
- Using a special set of system instructions that can update the TLB, OS handler set replace an entry with the new entry fetched from memory
hl-page:: 519
ls-type:: annotation
id:: 644f6250-82e1-4286-b25a-e4f4eb0eb622
hl-color:: yellow
- A true page fault occurs if the PTE does not have a valid PA
hl-page:: 519
ls-type:: annotation
id:: 644f62a6-7b6d-4434-bc3d-233892af468f
hl-color:: yellow
- Integrating Virtual Memory, TLBs, and Caches
ls-type:: annotation
hl-page:: 519
hl-color:: yellow
id:: 644f6050-cd77-4d32-afdb-3bf8a90302b7
collapsed:: true
- FIGURE 5.31 Processing a read or a write-through in the Intrinsity FastMATH TLB and cache.
ls-type:: annotation
hl-page:: 521
hl-color:: yellow
id:: 644f60d4-72c9-41e9-b976-d1ed1c07d830
- Cache and TLB
- In the simplest case, all memory addresses are translated to PAs before the cache access. This is slow.
hl-page:: 522
ls-type:: annotation
id:: 644f6370-8fd9-4a5e-92e3-09b74f6baa04
hl-color:: yellow
- Virtually addressed cache: uses tags from VAs, VIVT, to avoid using TLB before cache access (unless a TLB miss), which takes TLB out of critical path.
hl-page:: 522
ls-type:: annotation
id:: 644f6397-14d2-491c-9cef-bbfd6e5cca8f
hl-color:: yellow
- Aliasing occurs when the same object has two names. In this case, 2 VAs for the same page. Then one physical page has two copies in cache, introducing consistency issue.
hl-page:: 523
ls-type:: annotation
id:: 644f6434-eb87-405e-9190-4f67466af467
hl-color:: yellow
- Common compromise: virtually indexed but physically tagged, VIPT. Use the page offset portion of the address, which is identical in VA and PA, as the index of cache.
hl-page:: 523
ls-type:: annotation
id:: 644f6491-3e52-4db7-a824-5988e124ee1c
hl-color:: yellow
- Implementing Protection with Virtual Memory (Trivial)
hl-page:: 523
ls-type:: annotation
id:: 644f65cf-03a5-4132-b091-e08b9ce9002a
hl-color:: yellow
collapsed:: true
- Requirement for Hardware
- Support at least 2 priority levels of process
- Provide a portion of the processor state that a user process can read but not write.
ls-type:: annotation
hl-page:: 523
hl-color:: yellow
id:: 644f65f9-38a8-4ead-90f5-494c0b2e3191
- Provide mechanisms whereby the processor can go from user mode to supervisor mode and vice versa. In MIPS, `syscall` and `eret`
hl-page:: 524
ls-type:: annotation
id:: 644f660f-7534-4124-9b7e-32cd2ce2c77a
hl-color:: yellow
- Handling TLB Misses and Page Faults
ls-type:: annotation
hl-page:: 525
hl-color:: yellow
id:: 644f65b8-c079-42ce-a6b6-e1c56dbf45e9
- TLB miss can indicate one of two possibilities: Page in memory and True page fault
hl-page:: 525
ls-type:: annotation
id:: 644f67c6-de09-4546-b3a6-cbb286cca5bb
hl-color:: yellow
- MIPS handles a TLB miss in software. It brings in PTE from memory and then re-executes the instruction that caused the TLB miss. Upon re-executing, it will get a TLB hit.
hl-page:: 525
ls-type:: annotation
id:: 644f6897-2635-4cb9-ae6b-2515dc05694b
hl-color:: yellow
- We must prevent load/store from actually completing when there is an exception, when implementing the pipeline
hl-page:: 526
ls-type:: annotation
id:: 644f68df-1f9b-4430-a2ea-09ee1ca7361f
hl-color:: yellow
- General process of TLB handling
- Upon a TLB miss, the MIPS hardware saves the page number of the reference in `BadVAddr` and generates exception.
hl-page:: 527
ls-type:: annotation
id:: 644f6974-151b-46fa-afe2-ceed4ec48722
hl-color:: yellow
- Control is transferred to address `0x8000_0000`, the location of the TLB miss handler.
hl-page:: 528
ls-type:: annotation
id:: 644f69a6-31f7-4f57-8c78-75a19f0d83fd
hl-color:: yellow
- MIPS hardware places everything you need in the `Context` register: `base of page table | VPN`
hl-page:: 528
ls-type:: annotation
id:: 644f69dd-753d-4df6-b0fc-4f112a12f0ce
hl-color:: yellow
- Since TLB misses are quite frequent, the handler is simple
```asm
TLBmiss:
mfc0 $k1,Context # copy address of PTE into temp $k1
lw $k1,0($k1) # put PTE into temp $k1
mtc0 $k1,EntryLo # put PTE into special register EntryLo
tlbwr # put EntryLo into TLB entry at Random
eret # return from TLB miss exception
```
- TLB miss routine does not check validity of the page, but rather directly loads the PTE into TLB. If it is a true page fault, let the processor generate the Page Fault exception.
- TLB miss routine does not save process state, since it doesn't need to change anything
- TLB miss has a separate handler address, saving the effort to diagnose exception type from `Cause` register
- The process of handling a page fault is laborious. See FIGURE 5.34 for detail.
hl-page:: 530
ls-type:: annotation
id:: 644f6cf2-142f-4b34-a4c1-06de2a87879a
hl-color:: yellow
- To avoid the problem of a page fault during this low-level exception code, MIPS sets aside a portion of its address space that cannot have page faults, called `unmapped`.
hl-page:: 529
ls-type:: annotation
id:: 644f6d39-ad59-4a15-81a9-8dede8bef344
hl-color:: yellow
- Aside: The VMM implements memory control by maintaining a shadow page table. See textbook for detail
hl-page:: 529
ls-type:: annotation
id:: 644f6d8d-7c2f-4cb7-b689-eb282d35f411
hl-color:: yellow
- ## A Common Framework for Memory Hierarchy
ls-type:: annotation
hl-page:: 533
hl-color:: yellow
id:: 644e610b-15ef-47cd-8701-7bf7be87f16c
collapsed:: true
- Question 1: Where Can a Block Be Placed?
ls-type:: annotation
hl-page:: 534
hl-color:: yellow
id:: 644f6e31-ed3f-4bbf-8f30-53fe28e9e518
- This entire range of schemes can be thought of as variations on a set-associative scheme where the number of sets and the number of blocks per set varies
hl-page:: 534
ls-type:: annotation
id:: 644f6e76-bf1e-4def-b9c0-75f1faf3b5c6
hl-color:: yellow
- As cache size grows, the benefit of increasing associativity is slight.
- Question 2: How Is a Block Found?
ls-type:: annotation
hl-page:: 535
hl-color:: yellow
id:: 644f6ec3-e710-4abf-94a2-9f0c362e40e8
- VM uses full associative, while cache/TLB uses set associative
- Question 3: Which Block Should Be Replaced on a Cache Miss?
ls-type:: annotation
hl-page:: 536
hl-color:: yellow
id:: 644f6f0b-c5e3-4c38-90ec-67e3118b5c3d
- For hardware, random or approximated LRU, since they are simple to build
- In virtual memory, some form of LRU is always approximated, in that miss penalty is significant
hl-page:: 536
ls-type:: annotation
id:: 644f6f9a-a898-4b20-88c0-588c940ec793
hl-color:: yellow
- Question 4: What Happens on a Write?
ls-type:: annotation
hl-page:: 536
hl-color:: yellow
id:: 644f6fd5-59c8-41e3-8ede-402475ac6a72
- A summary of pros and cons for Write-back and Write-through
- When write latency is unacceptable, we tend to use Write-back
- The Three Cs: An Intuitive Model for Understanding the Behavior of Memory Hierarchies
ls-type:: annotation
hl-page:: 538
hl-color:: yellow
id:: 644f6ffe-256a-4252-af5b-5a2a8d03fc2e
- Compulsory, Capacity and Conflict misses
- Note that, compulsory misses can be reduced by increasing the block size
- ## Using a Finite-State Machine to Control a Simple Cache
ls-type:: annotation
hl-page:: 540
hl-color:: yellow
id:: 644f418c-dea9-442d-9f38-a60aef123e15
collapsed:: true
- Settings: Direct-mapped, Write-back and write-allocate, 16-Byte block, 16-KB total
- 10-bit Index, 4-bit Offset, 18-bit Tag
- Signals: 2 sets of signals, respectively CPU-Cache and Cache-Memory
- Read/Write, Valid, Address, Read data, Write data, Ready
- FSM for a Simple Cache Controller
ls-type:: annotation
hl-page:: 543
hl-color:: yellow
id:: 644f731a-a08e-4b86-ace7-800cf640accb
- Idle: Waits for a valid CPU request
- Compare Tag
- Test hit or miss: Select block with the index field, and then compare the tag, last check valid.
- If hit, set `CacheReady` and go back to Idle. If write, set the dirty bit; If read, set the `ReadData`
- If miss, set tag of the victim block to required address. Then go to Allocate or Write-back, determined by the dirty bit
- Note that, this state can be split into compare and access, to reduce latency
- Write-back: Writes a block to Memory (and wait for Memory's write ready). On completion, go to Allocate (since we have to wait for new data).
- Allocate: Waits for the Ready signal from Memory. On completion, goes to Compare Tag.
- ## Parallelism and Memory Hierarchy: Cache Coherence
ls-type:: annotation
hl-page:: 545
hl-color:: yellow
id:: 644f41a2-4c7b-4b27-b75e-ea06924fa51e
- **Coherence** defines what values can be returned by a read
hl-page:: 545
ls-type:: annotation
id:: 644f76e2-d5bc-47b0-90dd-c7ff33f07f13
hl-color:: yellow
- A memory system is coherent if:
hl-page:: 545
ls-type:: annotation
id:: 644f77a6-d507-4b1a-bc25-7f42648fd943
hl-color:: yellow
- A read by a processor P to a location X that follows a write by P to X, with no writes of X by another processor occurring between the write and the read by P, always returns the value written by P.
ls-type:: annotation
hl-page:: 545
hl-color:: yellow
id:: 644f77b5-83a5-4fb1-b3a6-3a2db489da39
- A read by a processor to location X that follows a write by another processor to X returns the written value if the read and write are sufficiently separated in time and no other writes to X occur between the two accesses.
ls-type:: annotation
hl-page:: 545
hl-color:: yellow
id:: 644f77c2-e346-4ffc-bb20-a1b3933fe9fc
- Writes to the same location are serialized; that is, two writes to the same location by any two processors are seen in the same order by all processors.
ls-type:: annotation
hl-page:: 546
hl-color:: yellow
id:: 644f77ca-4b61-4296-8a04-a7781102a0a2
- **Consistency** determines when a written value will be returned by a read.
hl-page:: 545
ls-type:: annotation
id:: 644f76e7-a61d-4f42-9c8a-adc7eb920a8c
hl-color:: yellow
- Basic Schemes for Enforcing Coherence
ls-type:: annotation
hl-page:: 546
hl-color:: yellow
id:: 644f7883-18c3-43d5-a7ed-51fac0fb3d83
- Migration: A data item can be moved to a local cache and used there in a transparent fashion.
ls-type:: annotation
hl-page:: 546
hl-color:: yellow
id:: 644f78a3-7065-435c-8ee6-21ae194c1961
- Replication: When shared data are being ==simultaneously read==, the caches make a copy of the data item in the local cache.
ls-type:: annotation
hl-page:: 547
hl-color:: yellow
id:: 644f78b7-c9fa-4854-824d-a8d0952ad3be
- cache coherence protocols, tracking the state of any sharing of a data block
hl-page:: 547
ls-type:: annotation
id:: 644f7956-11ad-4140-b966-6d2061ae6fb2
hl-color:: yellow
- snooping
ls-type:: annotation
hl-page:: 547
hl-color:: yellow
id:: 644f7a3d-783f-49d2-b697-91200284b2c8
- For each block, the caches which have this block, hold both the copy of data and a copy of the sharing status of this block.
- caches are accessible via some broadcast medium
hl-page:: 547
ls-type:: annotation
id:: 644f7ab7-b97c-41a9-8780-e9281ab19565
hl-color:: yellow
- cache controllers monitor (snoop) on the medium, to determine whether they have a copy of a block that is requested on a bus or switch access.
hl-page:: 547
ls-type:: annotation
id:: 644f7ad5-2103-4b23-a6c0-0417d431eb02
hl-color:: yellow
- write invalidate protocol: invalidate copies in other caches on a write. When others want to read/write later, they miss and fetch from memory. When others want to write simultaneously, there is a race and there is always a winner.
hl-page:: 547
ls-type:: annotation
id:: 644f797d-e82e-49fc-97b0-df7034494d5f
hl-color:: yellow
- ensure that a processor has exclusive access to a data item before it writes that item
- Parallelism and the Memory Hierarchy: Redundant Arrays of Inexpensive Disks
hl-page:: 550
ls-type:: annotation
id:: 644f41d0-39d8-476b-8d62-08e2bf5979ef
hl-color:: yellow
collapsed:: true
- Refer to ((6437e8b0-b179-46c1-9173-e9b080273f7e))
- ## Real Stuff: The ARM Cortex-A8 and Intel Core i7 Memory Hierarchies
ls-type:: annotation
hl-page:: 557
hl-color:: yellow
id:: 644e0503-5ee5-4da8-bf62-04b2fa91e5f9
collapsed:: true
- To support multiple issue (fetch more instructions per cycle), a popular technique is to break the cache into banks and allow multiple, independent, parallel accesses (if the addresses are in different banks).
hl-page:: 558
ls-type:: annotation
id:: 644fae8b-080a-4bed-8e02-08519a34b547
hl-color:: yellow
- nonblocking cache: *Hit under miss* allows additional cache hits during a miss, while *miss under miss* allows multiple outstanding cache misses.
hl-page:: 558
ls-type:: annotation
id:: 644faeff-a7cf-4a48-b257-50e090ca62be
hl-color:: yellow
- Core i7 has prefetch mechanism for data accesses
hl-page:: 559
ls-type:: annotation
id:: 644faf31-abe7-4938-b43a-15ca77c5a20a
hl-color:: yellow
- Going Faster: Cache Blocking and Matrix Multiply
ls-type:: annotation
hl-page:: 561
@ -2190,25 +2676,59 @@ file-path:: ../../../../assets/Computer_Organization_and_Design_1681729306797_0.
hl-page:: 564
hl-color:: yellow
id:: 644deab8-5929-424b-a0bb-9944268d757e
- Word List 5
collapsed:: true
- rug
- Pitfall: Having less set associativity for a shared cache than the number of cores or threads sharing that cache.
ls-type:: annotation
hl-page:: 565
hl-color:: yellow
id:: 644fb0df-1bf0-479c-bb16-de1b6729faa4
- Word List 5
- rug 小块地毯
hl-page:: 462
hl-color:: green
ls-type:: annotation
id:: 644dded8-ffe3-4d2e-abbe-d4374b5b30af
- proximity
hl-color:: green
- proximity (时间或空间)接近,邻近,靠近:
ls-type:: annotation
hl-page:: 478
hl-color:: green
id:: 644e0631-3612-4778-86c2-e6f062b426ab
- incur
ls-type:: annotation
- incur 招致,引发;蒙受
hl-page:: 489
hl-color:: green
id:: 644e59e3-12be-418f-bd07-bb228ec2a8ac
- ## Dependable Memory Hierarchy
ls-type:: annotation
hl-page:: 497
id:: 644e59e3-12be-418f-bd07-bb228ec2a8ac
hl-color:: green
- Voila 〈法〉那就是,瞧(表示事情成功或满意之感叹词用语)
hl-page:: 501
ls-type:: annotation
id:: 644f4c11-76c4-4c50-8278-f5a18415cad6
hl-color:: green
- culprit 罪犯;肇事者
hl-page:: 505
ls-type:: annotation
id:: 644f5381-dd30-4674-b37e-ce080e71a4a2
hl-color:: green
- duality 二元性;
hl-page:: 515
ls-type:: annotation
id:: 644f5b71-6ca0-47f3-8a20-9cc15c1fa0e0
hl-color:: green
- simplistic 过分简单化的
hl-page:: 545
ls-type:: annotation
id:: 644f7695-12e8-4ffe-a6c7-105b596300de
hl-color:: green
- saga 冒险故事;传说;英雄事迹
ls-type:: annotation
hl-page:: 561
hl-color:: green
id:: 644fafd9-52b6-4378-b808-35d07dd67108
- underscore 下画线
hl-page:: 568
ls-type:: annotation
id:: 644fb0c3-4e0b-41ea-8edb-01e11b936c65
hl-color:: green
- # Parallel Processors from Client to Cloud
ls-type:: annotation
hl-page:: 586
hl-color:: yellow
id:: 644dea78-9ad9-4322-a05d-1b30789b85a8
id:: 644fb152-58ba-4049-b461-37264438cfde

View File

@ -14,3 +14,114 @@ file-path:: ../assets/HTMFS_Strong_Consistency_Comes_for_Free_with_1682647018871
- Earlier FSs optimize for performance, but provide loose consistency guarantees
- With the speedup of modern storage devices, strong consistency can ease the pain of software programming.
- Strong consistency implies per-request sequential consistency.
- atomic modification: inode level locks
- Transaction semantics after crash recovery, all-or-none
- modern storage devices, PMEM, or non-volatile RAM
hl-page:: 2
ls-type:: annotation
id:: 64511829-234d-45a3-9d1c-f50d60466704
hl-color:: yellow
- Problem with existent PM FS: complicated mechanism, write amplification
- Previous approaches are limited to atomicity unit of CPU writes.
ls-type:: annotation
hl-page:: 2
hl-color:: yellow
id:: 64511979-cee9-4f46-87ba-6bbfe86bf0a4
- Problem with RTM: Block IO abort RTM; PM can be accessed as RAM, but with cache involved, also abort RTM
- enhanced asynchronous DRAM refresh (eADR)
hl-page:: 3
ls-type:: annotation
id:: 64511f4c-4338-41ad-9264-263ed5a08bf4
hl-color:: yellow
- guarantee the persistence of memory writes once they become globally visible,
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
id:: 6451204b-d1b8-46ed-8ec9-3a7c2d05244e
- eliminate the need for cache flush to sync with PM
- See [Detail](https://www.intel.com/content/www/us/en/developer/articles/technical/eadr-new-opportunities-for-persistent-memory-applications.html)
- Several challenges with RTM-PM
hl-page:: 3
ls-type:: annotation
id:: 6451205e-7f48-43e8-8704-d221d806cc18
hl-color:: yellow
- RTM is small, while FS data transfer are generally large
- Some FS operations have long code-path, lengthening RTM section, increasing conflict abort rate
- Hardware-assisted Optimistic Persistence
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
id:: 64512109-8ab0-49aa-b6a3-1524df0631ef
- eADR, HTM with cooperative locks as fallback
- HTMFS, a user-space PM file systems base on ZoFS
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
id:: 64512150-84a0-4839-aef6-48bb872fa776
- Background and Motivation
ls-type:: annotation
hl-page:: 3
hl-color:: yellow
id:: 6451215b-a495-4d6f-9427-f5c0c6685a28
- Persistent Memory and PM File Systems
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
id:: 645124e7-37ae-404c-bc83-2ae78628767f
- 主要的点就是PM 是 ==byte-addressable==
- Existing PMFS: The only difference would be leveraging atomic instructions to provide small updates up to a single cache line
hl-page:: 4
ls-type:: annotation
id:: 64526ec1-37e2-4891-bba8-eeb07c6e02d3
hl-color:: yellow
- 作者认为现有的PMFS没啥创新在一致性上还是用的旧东西除了用 PM 提供的 atomic inst 来简化某些原子操作
- 2.3 Hardware Transactional Memory
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
id:: 6452709d-6036-4dcd-8821-c106562565fe
- RTM的基本用法把 critical section 用 `xbegin``xend` 包起来
hl-page:: 4
ls-type:: annotation
id:: 645270e0-2153-4414-8b22-762cfc113c19
hl-color:: yellow
- Conflict aborts
hl-page:: 4
ls-type:: annotation
id:: 64527149-e50e-46c8-990f-0465060f9a5a
hl-color:: yellow
- 硬件维护trx的 read set 和 write set如果在提交之前有别的 core 读 write set 或者写 read set就会 abort。这些东西都在 cache 里面,维护这些也是用 cache coherence protocol
- Capacity aborts.
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
id:: 645271fa-ff04-4263-a2f2-d1879c1fb857
- 受到每个core本地cache比如L1的大小的限制
- Other aborts
hl-page:: 4
ls-type:: annotation
id:: 64527248-77dc-4d32-8a2b-737b7329d2e9
hl-color:: yellow
- 不兼容指令中断所以打IO显然不行等东西
- 2.4 HTM in PM File Systems
ls-type:: annotation
hl-page:: 4
hl-color:: yellow
id:: 64527270-d6d5-4232-98af-c0212ef47511
- HTM的操作是在 cache 里面的,没有持久化保证,除非显式刷到内存/PM里。但是 临界区内不能刷刷了就abort临界区之后要是被切走就寄了除非上锁不如直接上锁
- Intel 的新东西表示它可以做到commit到cache里面就能持久化
- 3 Design
ls-type:: annotation
hl-page:: 5
hl-color:: yellow
id:: 6452774e-a951-480a-a890-322d30fe3fd0
- 直接把 FS 操作用HTM包起来不现实因为FS的操作都很长很大
- 3.1 HOP
ls-type:: annotation
hl-page:: 5
hl-color:: yellow
id:: 645277dc-272c-4479-9d09-3f178cb77a42
- 非常自然的想法把一个操作或者说trx拆成小的
- 三种操作分类:
- Read、Invisible write(内部的东西,比如块分配信息) 、Visible write(应用程序可见的)
- 只有 Visible Write 用 HTM 实现Invisible 和 Read 通过别的机制来实现

View File

@ -1028,6 +1028,7 @@ file-path:: ../assets/ostep_1681115599584_0.pdf
hl-color:: yellow
collapsed:: true
- RAID Interface
id:: 643e8edc-8d60-4c99-ac89-8fb4720a1ac4
- Look like a ==big, fast and reliable disk==, which provides an abstraction of ==a linear array of blocks==. Usually, a RAID is connected to the host through ==standard interfaces== (e.g. SATA)
- Internally, the RAID controller decides how to perform ==physical I/Os== in order to complete a single ==logical I/O==.
- At a high level, a RAID is very much a specialized computer system: it has a processor, memory, and disks; however, instead of running applications, it runs specialized software designed to operate the RAID.