本文记录的已写或者待写文章的目录,希望呈现一个清晰的博客文章视图。
1. bio转化成ATA cmd并发往硬盘执行的流程(已写)
问题起源:
随着学习AHCI driver的不断深入,如果仅看Low Level Driver本身,难免产生“一叶障目不见泰山”之感,只有整体把握SCSI存储框架,才能真正了解存储机理。而SCSI存储框架的内容又非常繁杂,不妨从
我最好奇的一点——ATA cmd是从哪里来又到哪里去的——着手,慢慢深入研究。
内容概要:
如题,大致描述一下在SCSI存储框架中,bio是如何经过request、SCSI cmd,一步步转换成ATA cmd,并被发往HDD处理的。
2. 利用AHCI Controller的31个cmd slot提高I/O performance(已写)
问题起源:
第一版验证AHCI Controller的模块在处理non-NCQ cmd时,采用同步的方式进行,即“发送non-NCQ cmd-->等待执行结果-->显示处理结果-->发送下一个non-NCQ cmd”。
这种方式明显地效率低下,并且cmd的完成情况是异步的,因此不得不在脚本中加入一个估计的时延,期望等待该时延之后,cmd能够完成。转而想到,AHCI Controller有31个cmd slot可供使用,
理论上,我们可以同时给AHCI Controller的寄存器中写入31个non-NCQ cmd,如果能充分利用这点,那么验证效率会大幅度提高。
内容概要:
按照时间顺序,记录解决问题的过程。主要记录了AHCI driver对于enable/disable NCQ的不同处理,回答问题:能否利用AHCI Controller的31个cmd slot提高I/O performance。(答案是否定的)
3. PCI Device的MMIO空间大小的计算(已写)
问题起源:
好奇于MMIO的原理,真是一个神奇的东西,“操作内存”就等同于操作寄存器,
内容概要:
记录探究该问题的过程,内容会涉及PCI Device Driver以及PCI subsystem的初始化,以及ACPI初始化。
4. dev_printk()的实现(已写)
在Linux内核中,经常遇到dev_printk,有时候在查看log时,利用关键字来grep整个内核树并不能找到目标,其中有部分原因就是dev_printk,它虽然方便好用,但是也未搜索增加了难度。
浙公网安备 33010602011771号