Skip to content

Commit

Permalink
feat: deploy github page
Browse files Browse the repository at this point in the history
  • Loading branch information
LingKa28 committed Nov 27, 2023
1 parent e5575d2 commit 6f2f9d4
Show file tree
Hide file tree
Showing 51 changed files with 2,973 additions and 2,669 deletions.
Binary file added zh-cn/assets/bg-bg-3abf4aa0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added zh-cn/assets/cont-del-ill-f7f1f3a0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added zh-cn/assets/cover-ab5b198b.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed zh-cn/assets/cover18-cc6c9d06.jpg
Binary file not shown.
Binary file removed zh-cn/assets/cover37-187b655a.jpg
Binary file not shown.
Binary file removed zh-cn/assets/cover38-1e515665.jpg
Binary file not shown.
Binary file removed zh-cn/assets/cover39-c97bc11b.jpg
Binary file not shown.
Binary file removed zh-cn/assets/cover41-56007738.jpg
Binary file not shown.
Binary file removed zh-cn/assets/cover42-075bcf74.jpg
Binary file not shown.
Binary file removed zh-cn/assets/cover43-d1896502.jpg
Binary file not shown.
Binary file removed zh-cn/assets/cover44-3a97e013.jpg
Binary file not shown.
Binary file added zh-cn/assets/cover52-06cc8093.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added zh-cn/assets/cover53-11208fe4.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added zh-cn/assets/foot-ass-qr-e467649e.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added zh-cn/assets/foot-reg-qr-03a7d7e1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added zh-cn/assets/hl-ill-ab994ba5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const t="/zh-cn/assets/cover-9c53ea5f.png",l="/zh-cn/assets/image1-0a18e154.png",e=[t,l],r={label:"欢迎加入达坦科技硬件设计学习社区",description:"近年来随着Bluespec、Chisel、SpinalHDL、PyMTL等一众新一代HDL的推出,业界逐步感受到新一代HDL在数字芯片设计效率方面的提升。相比Verilog和VHDL,这些新一代HDL在语法表达能力、代码简洁程度、错误检查等方面有不小的提升;相比高阶综合HLS,这些新一代HDL支持RTL级描述能力,在芯片性能的把控方面远超HSL。数字芯片的敏捷设计,其目的就是为了提升硬件设计效率,减少人为错误。无论用哪一种语言进行硬件设计,背后扎实的硬件设计相关知识是必不可少的,特别是体系结构,因为体系结构专门研究CPU设计,而CPU是当今最复杂的数字芯片之一,各种常见的数字芯片设计问题在体系结构领域都能找到对应的参照,诸如流水线、缓存、内存管理、缓存一致性、异常处理等等。",cover:"./cover.png",location:"新加坡",date:"2023-01-12",title:"Welcome to join Datan Technology hardware design learning community"},s=[{label:"学习目的",level:2},{label:"学习内容",level:2},{label:"适合人群",level:2},{label:"学习方式",level:2},{label:"学习规划",level:2},{label:"参与方式",level:2}],o=`<p>近年来随着 Bluespec、Chisel、SpinalHDL、PyMTL 等一众新一代 HDL 的推出,业界逐步感受到新一代 HDL 在数字芯片设计效率方面的提升。相比 Verilog 和 VHDL,这些新一代 HDL 在语法表达能力、代码简洁程度、错误检查等方面有不小的提升;相比高阶综合 HLS,这些新一代 HDL 支持 RTL 级描述能力,在芯片性能的把控方面远超 HSL。数字芯片的敏捷设计,其目的就是为了提升硬件设计效率,减少人为错误。无论用哪一种语言进行硬件设计,背后扎实的硬件设计相关知识是必不可少的,特别是体系结构,因为体系结构专门研究 CPU 设计,而 CPU 是当今最复杂的数字芯片之一,各种常见的数字芯片设计问题在体系结构领域都能找到对应的参照,诸如流水线、缓存、内存管理、缓存一致性、异常处理等等。</p>
const t="/zh-cn/assets/cover-9c53ea5f.png",l="/zh-cn/assets/image1-0a18e154.png",e=[t,l],s={label:"欢迎加入达坦科技硬件设计学习社区",description:"近年来随着Bluespec、Chisel、SpinalHDL、PyMTL等一众新一代HDL的推出,业界逐步感受到新一代HDL在数字芯片设计效率方面的提升。相比Verilog和VHDL,这些新一代HDL在语法表达能力、代码简洁程度、错误检查等方面有不小的提升;相比高阶综合HLS,这些新一代HDL支持RTL级描述能力,在芯片性能的把控方面远超HSL。数字芯片的敏捷设计,其目的就是为了提升硬件设计效率,减少人为错误。无论用哪一种语言进行硬件设计,背后扎实的硬件设计相关知识是必不可少的,特别是体系结构,因为体系结构专门研究CPU设计,而CPU是当今最复杂的数字芯片之一,各种常见的数字芯片设计问题在体系结构领域都能找到对应的参照,诸如流水线、缓存、内存管理、缓存一致性、异常处理等等。",cover:"./cover.png",location:"新加坡",date:"2023-01-12",title:"Welcome to join Datan Technology hardware design learning community"},r=[{label:"学习目的",level:2},{label:"学习内容",level:2},{label:"适合人群",level:2},{label:"学习方式",level:2},{label:"学习规划",level:2},{label:"参与方式",level:2}],o=`<p>近年来随着 Bluespec、Chisel、SpinalHDL、PyMTL 等一众新一代 HDL 的推出,业界逐步感受到新一代 HDL 在数字芯片设计效率方面的提升。相比 Verilog 和 VHDL,这些新一代 HDL 在语法表达能力、代码简洁程度、错误检查等方面有不小的提升;相比高阶综合 HLS,这些新一代 HDL 支持 RTL 级描述能力,在芯片性能的把控方面远超 HSL。数字芯片的敏捷设计,其目的就是为了提升硬件设计效率,减少人为错误。无论用哪一种语言进行硬件设计,背后扎实的硬件设计相关知识是必不可少的,特别是体系结构,因为体系结构专门研究 CPU 设计,而 CPU 是当今最复杂的数字芯片之一,各种常见的数字芯片设计问题在体系结构领域都能找到对应的参照,诸如流水线、缓存、内存管理、缓存一致性、异常处理等等。</p>
<p>虽然国内大专院校计算机科学和电子工程专业都有开设体系结构或组成原理等相关课程,但是在实操环节缺失很多内容,特别是 CPU 里缓存、内存管理、异常处理相关的部分,基本上都不涉及。但是随着数字芯片的规模越来越大,芯片设计的复杂度指数级上升,对数字芯片的设计人员有很高的要求。<strong>当有志从事数字芯片设计的同学从学校走向社会,如何理解数字芯片设计的精髓,提升设计能力,成为能否胜任数字芯片设计工作的关键。</strong></p>
<p>为此,达坦科技在 2023 年始,<strong>发起成立硬件设计学习社区</strong>,诚邀所有对硬件敏捷开发设计感兴趣的同学加入我们的学习社区。这里有志同道合的小伙伴,共同学习目标的互助自学小组,有耐心答疑的助教。我们一起花一个月的时间,系统地学习计算机体系结构相关知识,并且通过动手项目来验证学习的成果。</p>
<h2 id="学习目的">学习目的</h2>
Expand Down Expand Up @@ -42,4 +42,4 @@ const t="/zh-cn/assets/cover-9c53ea5f.png",l="/zh-cn/assets/image1-0a18e154.png"
<li>准备好个人的简历,内容包括但不局限于:学校/专业、过往学术/项目经验</li>
<li>扫码联系小助手报名邮箱<a href="mailto:[email protected]">[email protected]</a>注册学习档案,通过后加入硬件设计学习社区群即参与成功。</li>
</ul>
<p><img src="${l}" alt="图片"></p>`;export{e as assetURLs,o as default,r as metadata,s as toc};
<p><img src="${l}" alt="图片"></p>`;export{e as assetURLs,o as default,s as metadata,r as toc};
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const i="/zh-cn/assets/cover-6865ae02.png",e=[i],l={label:"Xline v0.4.1:一个用于元数据管理的分布式KV存储",description:"Xline是一个基于Curp协议的,用于管理元数据的分布式KV存储。现有的分布式KV存储大多采用Raft共识协议,需要两次RTT才能完成一次请求。当部署在单个数据中心时,节点之间的延迟较低,因此不会对性能产生大的影响。",cover:"./cover.png",location:"中国香港",author:["达坦科技"],tags:["Xline"],date:"2023-06-21",title:"Xline v0.4.1: A distributed KV store for metadata management"},t=[{label:"Xline 是什么?我们为什么要做 Xline?",level:2},{label:"V0.4.0 版本有什么新功能?",level:3},{label:"欢迎参与到 Xline 项目中",level:2},{label:"相关链接",level:2}],s=`<p><img src="${i}" alt="封面"></p>
const e="/zh-cn/assets/cover-6865ae02.png",i=[e],l={label:"Xline v0.4.1:一个用于元数据管理的分布式KV存储",description:"Xline是一个基于Curp协议的,用于管理元数据的分布式KV存储。现有的分布式KV存储大多采用Raft共识协议,需要两次RTT才能完成一次请求。当部署在单个数据中心时,节点之间的延迟较低,因此不会对性能产生大的影响。",cover:"./cover.png",location:"中国香港",author:["达坦科技"],tags:["Xline"],date:"2023-06-21",title:"Xline v0.4.1: A distributed KV store for metadata management"},t=[{label:"Xline 是什么?我们为什么要做 Xline?",level:2},{label:"V0.4.0 版本有什么新功能?",level:3},{label:"欢迎参与到 Xline 项目中",level:2},{label:"相关链接",level:2}],s=`<p><img src="${e}" alt="封面"></p>
<h2 id="xline-是什么?我们为什么要做-xline?">Xline 是什么?我们为什么要做 Xline?</h2>
<p><strong>Xline 是一个基于 Curp 协议的,用于管理元数据的分布式 KV 存储。</strong> 现有的分布式 KV 存储大多采用 Raft 共识协议,需要两次 RTT 才能完成一次请求。当部署在单个数据中心时,节点之间的延迟较低,因此不会对性能产生大的影响。</p>
<p>但是,当跨数据中心部署时,节点之间的延迟可能是几十或几百毫秒,此时 Raft 协议将成为性能瓶颈。Curp 协议就是为了解决这个问题而设计的。它可以在命令不冲突的情况下减少一个 RTT,从而提高性能。因此,<strong>Xline 旨在实现高性能的数据访问和跨数据中心场景下的强一致性。</strong></p>
Expand Down Expand Up @@ -43,4 +43,4 @@ const i="/zh-cn/assets/cover-6865ae02.png",e=[i],l={label:"Xline v0.4.1:一个
<li>Curp 相关文章:<br>
<a href="https://medium.com/@datenlord/curp-revisit-the-consensus-protocol-384464be1600">https://medium.com/@datenlord/curp-revisit-the-consensus-protocol-384464be1600</a></li>
<li>Xline 官网:<a href="http://www.xline.cloud">www.xline.cloud</a></li>
</ul>`;export{e as assetURLs,s as default,l as metadata,t as toc};
</ul>`;export{i as assetURLs,s as default,l as metadata,t as toc};
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const e="/zh-cn/assets/cover-c17c52cc.png",s="/zh-cn/assets/image1-0dff4570.png",c="/zh-cn/assets/image2-e09cfdc8.png",o="/zh-cn/assets/image3-2b589463.png",p="/zh-cn/assets/image4-5841c9d6.png",a="/zh-cn/assets/image5-92344f1d.png",d="/zh-cn/assets/image6-b429f851.png",i="/zh-cn/assets/image7-97920b5a.png",r="/zh-cn/assets/image8-ecf5c6f3.png",t="/zh-cn/assets/image9-f47bad66.png",n="/zh-cn/assets/image10-b50adc27.png",l="/zh-cn/assets/image11-99ec2a51.png",m=[e,s,c,o,p,a,d,i,r,t,n,l],h={label:"从数学角度思考程序与验证正确性",description:"本文旨在为没有接触过形式化方法的读者提供一种新的视角看待计算机系统与算法,而非形式化方法或 TLA+ 教程。因此本文的重点是如何从数学角度思考程序,不会使用大篇幅讲解 TLA+ 的语法。",cover:"./cover.png",location:"中国香港",author:["田野"],tags:["Xline"],date:"2023-03-02",title:"Thinking about programs mathematically and verifying correctness"},g=[{label:"我们该如何写出正确的程序?",level:2},{label:"程序中会有什么样错误?",level:3},{label:"经验",level:3},{label:"形式化方法",level:3},{label:"TLA+",level:2},{label:"简单的例子",level:3},{label:"Two-Phase Commit",level:2},{label:"总结",level:2},{label:"我们的项目:Xline",level:2}],A=`<p><img src="${e}" alt="封面"></p>
const e="/zh-cn/assets/cover-c17c52cc.png",s="/zh-cn/assets/image1-0dff4570.png",c="/zh-cn/assets/image2-e09cfdc8.png",o="/zh-cn/assets/image3-2b589463.png",p="/zh-cn/assets/image4-5841c9d6.png",a="/zh-cn/assets/image5-92344f1d.png",d="/zh-cn/assets/image6-b429f851.png",i="/zh-cn/assets/image7-97920b5a.png",r="/zh-cn/assets/image8-ecf5c6f3.png",t="/zh-cn/assets/image9-f47bad66.png",n="/zh-cn/assets/image10-b50adc27.png",l="/zh-cn/assets/image11-99ec2a51.png",m=[e,s,c,o,p,a,d,i,r,t,n,l],g={label:"从数学角度思考程序与验证正确性",description:"本文旨在为没有接触过形式化方法的读者提供一种新的视角看待计算机系统与算法,而非形式化方法或 TLA+ 教程。因此本文的重点是如何从数学角度思考程序,不会使用大篇幅讲解 TLA+ 的语法。",cover:"./cover.png",location:"中国香港",author:["田野"],tags:["Xline"],date:"2023-03-02",title:"Thinking about programs mathematically and verifying correctness"},h=[{label:"我们该如何写出正确的程序?",level:2},{label:"程序中会有什么样错误?",level:3},{label:"经验",level:3},{label:"形式化方法",level:3},{label:"TLA+",level:2},{label:"简单的例子",level:3},{label:"Two-Phase Commit",level:2},{label:"总结",level:2},{label:"我们的项目:Xline",level:2}],A=`<p><img src="${e}" alt="封面"></p>
<p>本文旨在为没有接触过形式化方法的读者提供一种新的视角看待计算机系统与算法,而非形式化方法或 TLA+ 教程。因此本文的重点是如何从数学角度思考程序,不会使用大篇幅讲解 TLA+ 的语法。</p>
<h2 id="我们该如何写出正确的程序?">我们该如何写出正确的程序?</h2>
<p>程序设计的目标永远是写出正确的程序。随着时间的推移,我们的程序越来越复杂,其中可能存在的错误也越来越多。想要写出正确的程序,首先应该了解程序中可能出现的错误有哪些。</p>
Expand Down Expand Up @@ -149,4 +149,4 @@ Next 用于定义状态转换关系。</p>
<h2 id="我们的项目:xline">我们的项目:Xline</h2>
<p>TLA+被广泛用于分布式系统算法的研究和开发中。在我们的项目 Xline 中,TLA+被用来在设计阶段验证共识算法的正确性。</p>
<p>Xline 是一个用于元数据管理的分布式 KV 存储。我们在 Xline 中使用 CURP 协议(<a href="https://www.usenix.org/system/files/nsdi19-park.pdf)%E7%9A%84%E4%BF%AE%E6%94%B9%E7%89%88%E4%BD%9C%E4%B8%BA%E5%85%B1%E8%AF%86%E5%8D%8F%E8%AE%AE%EF%BC%8CTLA+%E5%B0%86%E8%A2%AB%E7%94%A8%E4%BA%8E%E5%85%B6%E6%AD%A3%E7%A1%AE%E6%80%A7%E9%AA%8C%E8%AF%81%E4%B8%AD%E3%80%82">https://www.usenix.org/system/files/nsdi19-park.pdf)的修改版作为共识协议,TLA+将被用于其正确性验证中。</a></p>
<p>如果你想了解更多关于 Xline 的信息,请参考我们的 Github:<a href="https://github.com/datenlord/Xline">https://github.com/datenlord/Xline</a></p>`;export{m as assetURLs,A as default,h as metadata,g as toc};
<p>如果你想了解更多关于 Xline 的信息,请参考我们的 Github:<a href="https://github.com/datenlord/Xline">https://github.com/datenlord/Xline</a></p>`;export{m as assetURLs,A as default,g as metadata,h as toc};
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const e="/zh-cn/assets/image1-145af1bc.png",a="/zh-cn/assets/image2-b5b0ee19.png",p="/zh-cn/assets/image3-204919ac.png",l="/zh-cn/assets/image4-e50f112d.png",t="/zh-cn/assets/image5-cdb8d1de.png",i=[e,a,p,l,t],n={label:"数据库隔离级别及MVCC",description:"数据库在同时处理多个事务时需要决定事务之间能否看到对方的修改,能看到多少等等。根据隔离的严格程度,从严到松可以分为 Serializable, Repeatable reads, Read committed, Read uncommitted。我们用下面这个 KV 存储的例子来解释这四个隔离级别。KV 存储的初始状态如下:",location:"中国香港",tags:["Xline"],date:"2023-02-16",title:"Database isolation level and MVCC"},o=[{label:"数据库隔离级别介绍",level:2},{label:"Read uncommitted",level:3},{label:"Repeatable read",level:3},{label:"Serializable",level:3},{label:"Snapshot 隔离级别及 MVCC",level:2},{label:"一点联想",level:2},{label:"总结",level:2}],s=`<h2 id="数据库隔离级别介绍">数据库隔离级别介绍</h2>
const e="/zh-cn/assets/image1-145af1bc.png",a="/zh-cn/assets/image2-b5b0ee19.png",l="/zh-cn/assets/image3-204919ac.png",p="/zh-cn/assets/image4-e50f112d.png",t="/zh-cn/assets/image5-cdb8d1de.png",i=[e,a,l,p,t],n={label:"数据库隔离级别及MVCC",description:"数据库在同时处理多个事务时需要决定事务之间能否看到对方的修改,能看到多少等等。根据隔离的严格程度,从严到松可以分为 Serializable, Repeatable reads, Read committed, Read uncommitted。我们用下面这个 KV 存储的例子来解释这四个隔离级别。KV 存储的初始状态如下:",location:"中国香港",tags:["Xline"],date:"2023-02-16",title:"Database isolation level and MVCC"},o=[{label:"数据库隔离级别介绍",level:2},{label:"Read uncommitted",level:3},{label:"Repeatable read",level:3},{label:"Serializable",level:3},{label:"Snapshot 隔离级别及 MVCC",level:2},{label:"一点联想",level:2},{label:"总结",level:2}],s=`<h2 id="数据库隔离级别介绍">数据库隔离级别介绍</h2>
<p>数据库在同时处理多个事务时需要决定事务之间能否看到对方的修改,能看到多少等等。根据隔离的严格程度,从严到松可以分为 Serializable, Repeatable reads, Read committed, Read uncommitted。我们用下面这个 KV 存储的例子来解释这四个隔离级别。KV 存储的初始状态如下:</p>
<p>Table 1:</p>
<p><img src="${e}" alt="图片"></p>
Expand All @@ -8,12 +8,12 @@ const e="/zh-cn/assets/image1-145af1bc.png",a="/zh-cn/assets/image2-b5b0ee19.png
<p><img src="${a}" alt="图片"></p>
<p>在 Read uncommitted 的隔离级别中,多个同时执行的事务是能够互相看到互相没有 commit 的写操作,因此可以认为这种隔离级别几乎没有作用。在上述例子中,Operation 2 读到的内容是 “AA”,Operation 4 读到的内容则是“DD”,即使第二个事务最终 Rollback 了。Read committed 有两个事务同时被执行,自上而下是执行顺序。</p>
<p>Table 3:</p>
<p><img src="${p}" alt="图片"></p>
<p><img src="${l}" alt="图片"></p>
<p>在 Read committed 的隔离级别中,只有被 Commit 后的结果可以被看到,因此在 Table 2 的执行顺序中,Operation 2 和 4 都能够读取到 “AA” 的值,即 Key 1 的值没有改变。如果按照 Table 3 中的情况执行两个事务,Operation 2 读到的值为 “AA”,Operation 5 读到的值为 “DD”,因为此时事务 2 已经执行成功。</p>
<h3 id="repeatable-read">Repeatable read</h3>
<p>如果在 Table 3 中的事务 1 两次连续读操作,用户想要保证读到相同的值,那就需要使用 repeatable read 隔离级别。在这个隔离级别中,在同一个事务中对同一条数据的多次读取保证会得到相同的值,即使这个过程中该数据被其他已经提交的事务修改掉。当然该隔离级别也有一些情况无法保证隔离性,比如下列情况:</p>
<p>Table 4:</p>
<p><img src="${l}" alt="图片"></p>
<p><img src="${p}" alt="图片"></p>
<p>在 repeatable read 的隔离级别下,Operation 2 的返回结果是 ["CC"] —— 只有 Key 3 的值被返回了,但是 Operation 5 的返回值是 ["CC", "DD"]。总结一下,repeatable read 的隔离级别仍然无法很好处理涉及多条数据的情况,特别是当有新的数据插入或者删除的情况。</p>
<h3 id="serializable">Serializable</h3>
<p>最严格的隔离级别叫做 Serializable,这个级别的定义也是最清晰明了的,在这种隔离级别下的执行结果,就“仿佛”是将所有事务串行起来一条一条执行的结果。上面这句话中值得强调的是 “仿佛” 二字,为了提高性能,几乎没有数据库是采用真正物理意义上的串行执行来保证 Serializable 的,仅仅达到类似效果即可,实现的方法是可以多种多样的。在 Serializable 级别下还有一个细致的分类,叫做 Snapshot,该分类与 Serializable 类似但约束能力上稍弱。正是因为 Snapshot 在约束上的放松,使得其实现起来具有更好的性能,也是绝大多数数据库默认支持的隔离级别。下面我们就来说说 Snapshot,以及引申出来的 MVCC 实现方法。</p>
Expand Down
Loading

0 comments on commit 6f2f9d4

Please sign in to comment.