精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
服务方向
联系方式
锐英源精品开源心得,禁止全文或局部转载,禁止任何形式的非法使用,侵权必究
从2020年底就找类似本文的内容,一直没有,好不容易在国外找来,所以内容整理不易,里面关键部分没有展示,但是认真看也能学到东西,想学驱动开发找锐英源,锐英源结合英语能力和开源能力帮你深入学习驱动。驱动开发培训也是中年程序员转型的好方向。这里也谢谢外文作者。
Development 发展
By Tom Fones, HTF Consulting tfones@htfconsulting.com HTF咨询顾问Tom Fones撰写tfones@htfconsulting.com
To this author’s knowledge, no published work expounds the benefits or feasibility of softwaresimulation of Peripheral Component Interface (PCI) devices. 就本文作者所知,没有发表的著作来阐述外围组件接口(PCI)设备软件仿真的好处或可行性。
In the 21st century, commercially viable PCI devices must be capable of plug-n-play, powermanagement, web based enterprise management and scatter-gather DMA. A device simulation insoftware incorporating all of these features is feasible. 在21世纪,商业上可行的PCI设备必须具有即插即用,电源管理,基于Web的企业管理和分散收集DMA的能力。包含所有这些功能的设备仿真软件是可行的。
This article discusses the many benefits and uses of a PCI device simulator as well as how to produceone. 本文讨论了PCI设备模拟器的许多好处和用途以及如何生产一个。
In the last twenty-plus years the PCI bus and its derivatives have seen an explosion in adoption across all small computer platforms. There are countless PCI devices on the market. The PCI bus has been through numerous revisions for the sake of performance improvement and expansion of function. 在过去的二十多年中,PCI总线及其派生工具在所有小型计算机平台上的采用都在爆炸式增长。市场上有无数的PCI设备。为了改善性能和扩展功能,PCI总线已经过多次修订。
There is a PCI Special Interest Group which has approximately one thousand members, primarily third-party hardware vendors who collaborate to evaluate and adopt standards for the different aspects of the PCI bus and interoperability with PCI devices. 有一个PCI特殊兴趣小组,有大约一千名成员,主要是第三方硬件供应商,他们合作评估和采用PCI总线不同方面的标准以及与PCI设备的互操作性。
To put it succinctly the PCI bus has critical mass. It will probably be around in some form for the life of the small computer. 简而言之,PCI总线的质量至关重要。在小型计算机的生命周期中,它将以某种形式出现。
There are several published papers in the public domain literature describing software simulations of the PCI bus itself. There is a description of a hardware simulator in a Windows device driver book Dekker and Newcomer. [Dekker & Newcomer, 1999]. This very admirable effort modeled a
character-mode device on NT 4.0. Unfortunately it is obsolete for multiple reasons. 在公共领域的文献中有几篇发表的论文描述了PCI总线本身的软件仿真。 Windows设备驱动程序手册Dekker和Newcomer中提供了有关硬件模拟器的描述。 [Dekker&Newcomer,1999]。这项非常令人钦佩的工作模型化了NT 4.0上的字符模式设备,不幸的是,由于多种原因,它已经过时了。
A software simulation of a PCI device is most useful when the device is still being designed in the hardware lab, or when sufficient quantity is not available from fabrication. It can save weeks or months of calendar time to develop the device software in parallel with hardware design and/or fabrication. 当仍在硬件实验室中设计PCI设备或无法从制造中获得足够数量时,对PCI设备进行软件仿真最为有用。与硬件设计和/或制造并行开发设备软件可以节省数周或数月的日历时间。
I was involved in a project a few years ago where a small company was having difficulty completing the design of their storage device and then getting quantities from the fabrication plant in Taiwan.
We implemented a basic simulation of the target device, which allowed exercising the device management portion of the target device driver in user mode. Many man-months over multiple calendar months were dedicated to implementing the simulation and building testware around the device driver. Yet when the device(s) arrived we were exercising complete kernel-mode drivers for the first time on both Linux and Windows. 几年前,我参与了一个项目,当时一个小公司在完成存储设备的设计,然后从台湾的制造工厂获取数量时遇到了困难。我们实现了目标设备的基本仿真,该仿真允许在用户模式下行使目标设备驱动程序的设备管理部分。多个日历月中的许多人月专用于实现模拟并围绕设备驱动程序构建测试软件。但是,当设备到货时,我们第一次在Linux和Windows上都使用了完整的内核模式驱动程序。
A good device simulator exercises plug-n-play and power management without a physical device. A good simulator can emulate hard to create error conditions: device failure, device power failure, or errors that the real device cannot easily be made to produce. 100% device driver source code coverage can be achieved. 一个好的设备模拟器无需物理设备即可进行即插即用和电源管理。一个好的模拟器可能会模拟很难创建的错误情况:设备故障,设备电源故障或无法轻易使实际设备产生的错误。可以实现100%设备驱动程序源代码覆盖率。
A device simulator can also be a useful training tool for developing device drivers for software engineers who develop device drivers. I attended a driver development course a number of years ago where the developers of the course (Dekker & Newcomer) provided a bare-bones device simulator to students instead of a device kit. It was basically a tool for their debug lab. But it was the inspiration for developing a full-featured device simulator in software. 设备模拟器也可以是有用的培训工具,用于为开发设备驱动程序的软件工程师开发设备驱动程序。几年前,我参加了一个驱动程序开发课程,该课程的开发人员(Dekker&Newcomer)为学生提供了一个准系统的设备模拟器,而不是设备套件。基本上,这是他们的调试实验室的工具。但这是在软件中开发功能齐全的设备模拟器的灵感。
A device simulator enables development on a platform with good development, testing and debugging resources when the target platform may have limited tools as in the case of tablets, or limited access as in the case of embedded systems.
Lastly, the kernel module of a PCI bus and device simulation is of necessity a subset of the PCI bus driver, and therefore any bus driver which supports child devices. It will prove useful as the basis for future bus driver development. 当目标平台在平板电脑方面可能具有有限的工具,在嵌入式系统方面却具有有限的访问权限,则设备模拟器可以在具有良好开发,测试和调试资源的平台上进行开发。最后,PCI总线和设备仿真的内核模块必须是PCI总线驱动程序的子集,因此必须是支持子设备的任何总线驱动程序。它将被证明是将来总线驱动程序开发的基础。
Nearly all PCI devices have these properties that driver software must manage:
1) They have a formatted configuration space containing information about identity and behavior properties. 几乎所有PCI设备都具有驱动程序软件必须管理的以下属性:
2) They are memory-mapped. 1)它们具有格式化的配置空间,其中包含有关身份和行为属性的信息。
3) They issue interrupts to the host. 2)它们是内存映射的。
4) They transfer significant chunks of data to/from the host – usually through Direct Memory Access (DMA). 3)它们向主机发出中断。
5) They must conform to plug-n-play and power management expectations of the host operating system (OS). 4)它们通常通过直接内存访问(DMA)与主机之间传输大量数据。5)它们必须符合主机操作系统(OS)的即插即用和电源管理要求。
The diagram on the following page shows the host computer environment of a PCI device. From top to bottom we have: a test application which wishes to communicate with the device, the device driver that the test app interacts with, the bus driver that manages the PCI bus, and the PCI bus itself with the target device mounted onto it. 下一页上的图显示了PCI设备的主机环境。从上到下,我们有:一个希望与设备通信的测试应用程序,该测试应用程序与之交互的设备驱动程序,管理PCI总线的总线驱动程序以及安装有目标设备的PCI总线本身。
Observe that the test app interacts with the device (driver) through opens, reads, writes and Inputoutput controls (IOCTL)s. Also that the PCI device issues an interrupt to the host through the PCI bus,and the OS kernel delivers this interrupt to the device driver through a table lookup. Finally,observe that data is transferred – DMA or buffered – between the target device and driver, through the PCI bus. 观察到测试应用通过打开,读取,写入和输入输出控件(IOCTL)与设备(驱动程序)交互。另外,PCI设备还会通过PCI总线向主机发出中断,并且OS内核会通过表查找将此中断传递给设备驱动程序。最后,观察到数据通过PCI总线在目标设备和驱动程序之间进行了DMA或缓冲传输。
The following diagram shows the PCI bus driver and a PCI device driver interacting with the host kernel. Observe that device configuration space is maintained by the bus driver and is available to the appropriate device driver through kernel services. Also that the bus driver informs the kernel Plug-and-Play (PnP) manager of a new device instance on the bus. Finally observe that the kernel PnP manager assigns all resources needed by the device driver for the device. 下图显示了与主机内核交互的PCI总线驱动程序和PCI设备驱动程序。请注意,设备配置空间由总线驱动程序维护,并且可以通过内核服务供相应的设备驱动程序使用。总线驱动程序还将总线上的新设备实例通知内核即插即用(PnP)管理器。最后观察到内核PnP管理器为设备分配了设备驱动程序所需的所有资源。
4.3 CONFIGURATION SPACE 4.3配置空间
There is a 256 byte formatted configuration space in host memory for every device on a PCI bus. PCI总线上每个设备的主机内存中都有256字节格式化的配置空间。
This memory is maintained by the bus driver. Configuration space contains two sets of information: 该内存由总线驱动程序维护。配置空间包含两组信息:
identity and properties. 身份和属性。
The identity information is: Vendor_Id, Device_Id, Revision_Id and Class Code. This information is sufficient to indicate which device driver should be assigned to the device, and what set of features are supported by the device.身份信息是:Vendor_Id,Device_Id,Revision_Id和类代码。此信息足以指示应将哪个设备驱动程序分配给该设备,以及该设备支持哪些功能集。
A PCI device will have a set of read-writeable registers that the host will use to program the device and determine device state. In addition, there may be other banks of memory on the device for other purposes. Each of these banks of device memory are assigned a physical address by the OS. 一个PCI设备将具有一组可读写的寄存器,主机将使用它们来对该设备进行编程并确定设备状态。此外,设备上可能还有其他存储体用于其他目的。操作系统为这些设备存储库中的每一个分配了一个物理地址。
Examples are device firmware accessible by the host and the Controller Memory Buffer of NonVolatile Memory express (NVMe) devices.
We say that these memory banks are mapped into the host’s physical address space. These addresses are stored in the Base Address Registers (0 – 5) in device configuration space. 例如,主机可访问的设备固件以及非易失性内存表达(NVMe)设备的控制器内存缓冲区。我们说这些存储库已映射到主机的物理地址空间。这些地址存储在设备配置空间的基址寄存器(0 – 5)中。
When a device has completed a programmed i/o, or has a problem state to report, it issues an interrupt to the host hardware. This may be done by changing the voltage on a particular pin on the bus (legacy interrupt), or setting a specific value into a specific location of memory (Message Signaled Interrupt - MSI). The host OS is responsible for deliverying the interrupt to the kernel software module which manages the device. 当设备完成已编程的I / O或有问题状态要报告时,它将向主机硬件发出中断。这可以通过更改总线上特定引脚上的电压(旧式中断)或将特定值设置到存储器的特定位置(消息信号中断-MSI)来完成。主机操作系统负责将中断传递给管理设备的内核软件模块。
PCI devices usually transfer significant chunks of data to/from the host random access memory (RAM). This is usually done through DMA. DMA works without requiring clock cycles from the processor or buffer copying. PCI设备通常向主机随机存取存储器(RAM)传输大量数据。这通常是通过DMA完成的。 DMA的工作原理不需要处理器或缓冲区复制的时钟周期。
A DMA-capable PCI device will typically have a DMA controller which is capable of processing a Scatter-Gather List (SGL) in ram, formatted in a specific way. This list will contains physical addresses on the host, offsets on the device, transfer lengths and direction of transfer.具有DMA功能的PCI设备通常将具有DMA控制器,该DMA控制器能够处理以特定方式格式化的ram分散-聚集列表(SGL)。该列表将包含主机上的物理地址,设备上的偏移量,传输长度和传输方向。
The PCI bus and device must perform several PnP and Power Management (PM) functions. They must plug in or unplug, and transfer to/from several different power states. A PCI device must change power state in response to system or device power state changes initiated by the OS.必须实现即插即用和电源管理函数。必须是可插拔或非可插拔,传出或接收几个不同电源状态。PCI设备必须根据OS调度修改电源状态以响应系统或设备电源状态修改。
A software simulation of a PCI bus and device must perform the following functions: PCI总线和设备的软件仿真必须执行以下功能:
1) Present the ‘device’ to the host OS so that the natural PnP processing proceeds. 1)将“设备”呈现给主机OS,以便自然进行PnP处理。
2) Provide configuration resources to the target device driver – simulating the PnP Manager. 2)提供配置资源给目标设备驱动程序–模拟PnP管理器。
3) Allocate sufficient memory for one or more devices and provide a mapping to “device memory” for both the target device driver and any device simulation UI program. 3)为一个或多个设备分配足够的内存,并为目标设备驱动程序和任何设备模拟UI程序提供到“设备内存”的映射。
4) Invoke the target driver’s Interrupt Service Routine (ISR) exactly as the OS kernel would do so. 4)完全像操作系统内核那样调用目标驱动程序的中断服务例程(ISR)。
5) Behave like the PCI bus or PCI device in response to external events – triggered by the UI program(s). 5)行为类似于PCI总线或PCI设备,以响应由UI程序触发的外部事件。
The diagram on the following page shows the PCI device driver in the simulation
environment. Observe that the test app interacts with the PCI device driver as before. 下一页的图显示了仿真中的PCI设备驱动程序 环境。观察测试应用程序是否像以前一样与PCI设备驱动程序交互。
It should be completely unaware that the “device” is implemented in software. Also that there is a device node in both the simulation bus driver as well as the PCI device driver for each instance of a device. The simulation driver is under control of the user interface program. 应该完全不知道“设备”是通过软件实现的。此外,对于每个设备实例,在仿真总线驱动程序和PCI设备驱动程序中都存在一个设备节点。模拟驱动程序受用户界面程序的控制。
The simulation driver maps “devices” into the device driver as the PnP manager would. The simulation driver invokes the device driver’s Interrupt Service Routine (ISR) when the “device” interrupts. 仿真驱动程序将PnP管理器将“设备”映射到设备驱动程序。当“设备”中断时,仿真驱动程序将调用设备驱动程序的中断服务程序(ISR)。
As stated, every bus driver must indicate to the OS that a new device has arrived when it detects a plug-in. A simulation of the PCI bus would do the normal processing to create a new device node and call the appropriate kernel service to alert the OS that there is a change in configuration on the bus. This should cause the target device driver to do its normal processing for a plug-in. When an unplug occurs, the bus simulation must delete its device node and again call the appropriate kernel
service to alert the OS that there is a change in bus configuration. 如前所述,每个总线驱动程序都必须在检测到插件时向OS指示新设备已到达。 PCI总线的仿真将执行正常的处理,以创建一个新的设备节点,并调用适当的内核服务以警告OS总线上的配置发生更改。这将导致目标设备驱动程序对插件执行其正常处理。拔出时,总线仿真必须删除其设备节点,然后再次调用相应的内核
When a change in system or device power state is initiated by the host the device simulation should faithfully behave as the device would. 服务通知操作系统总线配置已更改。当主机启动系统或设备电源状态的更改时,设备模拟应如实地执行设备的行为。
The simulation must provide resource/configuration management parameters to the target device driver as if they came from the PnP manager. This includes a physical address for device registers,interrupt parameters (IDT entry, device IRQL, processor affinity) and physical addresses for any other banks of device memory that the driver needs to access.模拟必须向目标设备驱动程序提供资源/配置管理参数,就像它们来自PnP管理器一样。这包括设备寄存器的物理地址,中断参数(IDT条目,设备IRQL,处理器相似性)以及驱动程序需要访问的任何其他设备存储器的物理地址。
The simulation must allocate enough memory to represent one or more devices in ram. It must provide a mapping into a virtual address space for the target device driver and the device simulation graphical user interface (GUI) program. 模拟必须分配足够的内存以表示ram中的一个或多个设备。它必须为目标设备驱动程序和设备模拟图形用户界面(GUI)程序提供到虚拟地址空间的映射。
The simulation must invoke the target device driver’s ISR exactly as the OS kernel would. This entails running at the proper processor affinity, acquiring the spinlock specific to the device interrupt object, raising the host execution level to device IRQL, and then passing the correct arguments to the target driver ISR. These arguments would be the interrupt object and perhaps some context information and/or an MSI message-id. 仿真必须完全像操作系统内核那样调用目标设备驱动程序的ISR。这需要在适当的处理器亲和力下运行,获取特定于设备中断对象的自旋锁,将主机执行级别提升至设备IRQL,然后将正确的参数传递给目标驱动程序ISR。这些参数将是中断对象,可能是一些上下文信息和/或MSI消息ID。
The simulator transfers data between the host and “device memory” as would the device. The GUI representation of the device displays the current state of the device. The simulator also behaves as does the device DMA controller. This entails processing the hardware SGL and transferring chunks of data between the host physical addresses and “device memory”. 模拟器会像设备一样在主机和“设备内存”之间传输数据。设备的GUI表示形式显示设备的当前状态。模拟器的行为也与设备DMA控制器的行为相同。这需要处理硬件SGL,并在主机物理地址和“设备内存”之间传输数据块。
The target device driver needs to be built for simulation_mode as distinct from real_mode, where real hardware exists. This is because the target device driver must exchange a few parameters with the device simulator so that the simulator can know how to interact with the driver as the OS would. 需要为Simulation_mode构建目标设备驱动程序,这与存在实际硬件的real_mode不同。这是因为目标设备驱动程序必须与设备模拟器交换一些参数,以便模拟器可以像OS一样知道如何与驱动程序进行交互。
These parameters are: the interrupt object, the spinlock object for the interrupt, the device IRQL,the interrupt processor affinity, and the address of the driver ISR. 这些参数是:中断对象,中断的自旋锁对象,设备IRQL,中断处理器相似性以及驱动程序ISR的地址。
Ideally, there would be no if-then-else logic to vary the execution path between simulation_mode and real_mode. There should only be some additional logic in simulation_mode. 理想情况下,将没有if-then-else逻辑来改变simulation_mode和real_mode之间的执行路径。 Simulation_mode中应该只包含一些其他逻辑。
This is not good because we are missing some code coverage in simulation mode. 这不好,因为我们在仿真模式下缺少一些代码覆盖率。
#ifdef SIMULATION_MODE… // Do it this way…
#else… #endif |
// Do it this other way… |
This is the preferred way. We are merely adding code in simulation mode to help the simulator. 这是首选方式。我们只是在仿真模式下添加代码以帮助仿真器。
#ifdef SIMULATION_MODE #ifdef SIMULATION_MODE
//Pass some parameters to the simulator //将一些参数传递给模拟器
#endif #万一
A software simulator produced from source code has no platform constraint. The target driver, user application(s) and simulation software can be built and exercised on 32 or 64 bit; X64, Itanium or ARM architecture, as well as any recent or new release of the target OS -- Windows, Linux, or other. 由源代码生成的软件模拟器没有平台限制。目标驱动程序,用户应用程序和仿真软件可以在32位或64位上构建和使用; X64,Itanium或ARM体系结构,以及目标操作系统的任何最新或新发行版-Windows,Linux或其他。
As mentioned above, a simulator can even be run cross-platform. The device driver for a device which is targeted for the ARM architecture can be developed and exercised on legacy i386 or x64 before porting to the target platform, which may have minimal development and test support. 如上所述,模拟器甚至可以跨平台运行。在移植到目标平台之前,可以在旧版i386或x64上开发和练习针对ARM体系结构的设备的设备驱动程序,这可能对开发和测试的支持最少。
Simulation software can be run on any native hardware platform or on a virtual machine (VM) such as VBox, VMware, or Hypervisor. 仿真软件可以在任何本地硬件平台上运行,也可以在虚拟机(VM)(例如VBox,VMware或Hypervisor)上运行。
A software simulation of a memory-mapped device is not even constrained to the PCI bus. Should a truly new memory-mapping bus come along, or a significant enhancement to PCI(x) that software would be sensitive to, it is a simple matter to modify the simulation and target software for a different bus and configuration space, and then rebuild. 内存映射设备的软件仿真甚至不局限于PCI总线。如果出现了真正的新型内存映射总线,或者该软件将对PCI(x)进行显着增强,那么只需针对不同的总线和配置空间修改仿真和目标软件,然后进行重建,就很简单了。
A simulation from compiled source code cannot accurately model any new target device as is. It is necessary to customize the software from a prototype device simulation to one consistent with the specifications of the target device. 从编译的源代码进行的仿真无法按原样准确地对任何新的目标设备建模。有必要将软件从原型设备仿真定制为与目标设备规格一致的软件。
A software simulation cannot accurately model the timing or throughput performance of the device interacting with the bus. Register reads and writes across the bus are implemented in the simulation as memory transfers within ram. DMA transfers are implemented by buffer copying within ram. 软件仿真无法准确地模型化时序或吞吐量性能,这是在与总线交互的设备的情况。总线上的寄存器读写在仿真中作为内存在RAM中的传输来实现。 DMA传输通过ram中的缓冲区复制实现。
Multiple devices on the same bus will compete for bus bandwidth. 同一条总线上的多个设备将争夺总线带宽。
A device simulation – even with 100% code coverage - cannot be a substitute for thorough testing with the real device. New devices have their quirks and don’t always behave just like the specification. Real-world devices can cause resource conflicts among themselves, leading to intermittent mis-routing of interrupts. 即使是100%的代码覆盖率,设备仿真也不能替代对真实设备的全面测试。新设备有其古怪之处,并非总是表现得像规范一样。现实中的设备可能导致它们之间的资源冲突,从而导致中断的间歇错误路由。
Of course, if the specification for a device changes, the simulation must change as well. 当然,如果设备的规格发生变化,则仿真也必须发生变化。
The reader may have guessed by now that the author has a working model of PCI device simulation in the Windows world. On the author’s web site there is a diagram showing how the components work together and a three minute demonstration of operation. Please see the authors’ web site in the References. 到目前为止,读者可能已经猜到了作者在Windows世界中具有PCI设备仿真的工作模型。在作者的网站上,有一张图表,显示了各个组件如何协同工作,并演示了三分钟的操作。请在参考文献中查看作者的网站。
1) Port the existing implementation to Linux as well as possibly other OSes. 1)将现有实现移植到Linux以及可能的其他OS。
2) Build a front end for the device simulation such that FPGA or ASIC device definitions can 2)构建设备仿真的前端,以便FPGA或ASIC设备定义可以
serve as input to the generation of new simulations. 作为生成新模拟的输入。
3) Add reporting capabilities so that it’s possible to track what has been tested as well as 3)添加报告功能,以便可以跟踪经过测试的内容以及
performance results. 性能结果。
10 CONCLUSION 10结论
A software simulation of PCI devices is both feasible and beneficial. Chief benefits include parallel development of software and hardware, 100% code coverage, platform flexibility and hard-tocreate or rarely occurring conditions (re)produced readily. PCI设备的软件仿真既可行又有益。主要优势包括软件和硬件的并行开发,100%的代码覆盖率,平台灵活性以及难以创建或难以发生的条件(易于重新生成)。
With a prototype working on the target OS, customization and deployment can be achieved in a matter of days or a few weeks -- a device driver developer’s dream. 通过在目标操作系统上运行原型,可以在几天或几周内完成自定义和部署,这是设备驱动程序开发人员的梦想。
A working model of PCI device simulation exists in the Windows world. An implementation on Linux is achievable. I leave it to the reader to consider the cost versus benefit. Windows世界中存在PCI设备仿真的工作模型。可以在Linux上实现。我留给读者考虑成本与收益。
I thank the reader for their interest. 我感谢读者的关注。
ASIC – Application Specific Integrated Circuit - an integrated circuit customized for a particular use,rather than intended for general-purpose use. For example, a chip designed to run in a digital voice recorder is an ASIC. ASICs are fixed, they are not modifiable. As opposed to FPGAs which are field programmable. ASICs are the brains of many PCI devices. ASIC –专用集成电路-一种为特定用途而定制的集成电路,而不是用于通用用途的集成电路。例如,设计为在数字语音记录器中运行的芯片是ASIC。 ASIC是固定的,不可修改。与现场可编程的FPGA相反。 ASIC是许多PCI设备的大脑。
DMA - Direct Memory Access - a means of transferring memory between a device and host memory in a computer without a processor being involved in buffer copying. DMA is much faster than normal memory transfers but is more difficult to set up by programming the device. DMA-直接内存访问-一种在计算机中的设备和主机内存之间传输内存的方法,而缓冲区复制不涉及处理器。 DMA比普通的存储器传输要快得多,但是通过对设备进行编程更难以设置。
FPGA – Field Programmable Gate Array – an integrated circuit containing an array of programmable logic blocks and a hierarchy of reconfigurable interconnects that allow the blocks to be wired together, like many logic gates that can be inter-wired in different configurations. These logic blocks form the basis for computer devices which perform complex logic operations as part of their function. FPGA defined logic is the brains of many PCI devices. FPGA –现场可编程门阵列–一种集成电路,其中包含可编程逻辑块阵列和可重新配置互连结构的层次结构,这些互连结构允许将块连接在一起,就像许多可以以不同配置互连的逻辑门一样。这些逻辑块构成了计算机设备的基础,计算机设备执行复杂的逻辑操作作为其功能的一部分。 FPGA定义的逻辑是许多PCI设备的大脑。
GUI - Graphical User Interface – a means of interacting with a computer and its electronic devices through visual icons and indicators as opposed to text-based interfaces or text navigation. GUI-图形用户界面–一种通过视觉图标和指示器与计算机及其电子设备进行交互的方式,而不是基于文本的界面或文本导航。
IDT - Interrupt Descriptor Table – a table in host memory which is used to route hardware interrupts from specific devices to the appropriate interrupt service routine in a device driver which knows how to control the interrupting device. IDT-中断描述符表–主机存储器中的表,用于将硬件中断从特定设备路由到设备驱动程序中的适当中断服务例程,该设备驱动程序知道如何控制中断设备。
IOCTL - Input Output Control – a command from a user program to a device through its device driver to perform some specific defined function. It may be an administrative function or an i/o which is not a simple read or write. IOCTL-输入输出控制–从用户程序通过其设备驱动程序到设备的命令,以执行某些特定的已定义功能。它可能是管理功能或不是简单的读写操作的I / O。
IRQL - Interrupt Request Level – an execution level which an interrupt service routine will run at assigned by the OS. When a processor is running at execution level X, only an interrupt at IRQL X+1 can gain execution on the same processor. IRQL-中断请求级别–中断服务程序将在OS分配的运行级别上执行。当处理器以执行级别X运行时,只有IRQL X + 1处的中断才能在同一处理器上获得执行。
MSI - Message Signaled Interrupt – a means of triggering an interrupt to a host by writing to host memory rather than changing the voltage on a specific pin wired to the host. Non MSI interrupts are now referred to as legacy interrupts. MSI-消息信号中断–一种通过写入主机内存而不是更改连接到主机的特定引脚上的电压来触发主机中断的方法。非MSI中断现在称为旧式中断。
OS |
- Operating System – a software system which runs on a computer and performs all |
administrative functions for one or more end-users. Well known small computer OSes are: |
|
PCI |
- Peripheral Component Interface - a local computer bus for attaching hardware devices in a |
computer. Attached devices are typically expansion cards that fit into slots but may be an integrated circuit fitted onto the motherboard itself. 电脑。连接的设备通常是可插入插槽的扩展卡,但也可以是安装在主板本身上的集成电路。
PM - Power Management is a feature of computers and computer peripherals that turns off the power or switches the system or device to a lower power state when inactive. As more and more computation devices have become portable and battery-powered, power management has increased in importance. PM-电源管理是计算机和计算机外围设备的功能,在不活动时可以关闭电源或将系统或设备切换到较低的电源状态。随着越来越多的计算设备变得便携式且由电池供电,电源管理的重要性日益提高。
PnP - Plug-and-Play – a feature of modern OSes that allow attaching a new device and having it perform its normal functions without having to reconfigure the OS and without having to reboot the system. PnP-即插即用–现代OS的一项功能,允许连接新设备并使其执行其正常功能,而不必重新配置OS,也不必重新启动系统。
Processor Affinity – is the process of binding and unbinding a process, thread or function to a particular processor or set of processors, so that they will execute only on the designated processor(s). The benefit to binding hardware interrupt functions to processors is so that multiple packets of data from a device will be in the same processors’ cache. This can be a significant performance improvement. 处理器相似性–是将进程,线程或功能绑定和取消绑定到特定处理器或一组处理器的过程,因此它们将仅在指定的处理器上执行。将硬件中断功能绑定到处理器的好处是,来自设备的多个数据包将位于同一处理器的缓存中。这可以显着提高性能。
RAM – Random Access Memory - is a form of computer data storage allowing read or write of digital data in almost the same amount of time irrespective of the physical location of data inside the memory (thus random access). RAM is normally volatile, meaning stored information is lost if power is removed. Therefore it is inappropriate for permanent storage. RAM –随机存取存储器–是一种计算机数据存储形式,无论数据在内存中的物理位置如何(因此,随机存取),它都可以在几乎相同的时间内读取或写入数字数据。 RAM通常是易失性的,这意味着如果断电,存储的信息将会丢失。因此,它不适用于永久存储。
SGL - Scatter-Gather List - a set of elements in memory describing a DMA transfer between the host and a device. A Scatter-Gather List is formatted specific to the requirements of the target device, and is processed by the device’s DMA controller. SGL-分散收集列表-内存中的一组元素,描述了主机与设备之间的DMA传输。分散收集列表的格式特定于目标设备的要求,并由设备的DMA控制器进行处理。
VM - Virtual Machine – an emulation of a computer and an OS running as a software simulation on a host machine and a VM supporting OS. Examples of VM Oses are: VMware by VMware, Vbox by Oracle, and Hypervisor by Microsoft. VM-虚拟机–计算机和操作系统的仿真,在主机和支持OS的VM上作为软件模拟运行。 VM Oses的示例包括:VMware的VMware,Oracle的Vbox和Microsoft的Hypervisor。