中断处理程序具备的抢占功能,可以满足系统里对于实时性要求高的场景,但同时也带来了中断和事务之间的互斥问题。中断和事务的互斥方式如图六■■■★■◆。
通过事务调度思路,忆联实现了旗下企业级SSD产品的高性能和高可靠性,业务功能的设计★◆■、实现■◆、扩展都变得更加简单和灵活,业务功能的代码复用也变得更简单◆◆■◆★■,这让忆联在开发新代次SSD时★◆■★★◆,可以很好地继承已有代次SSD产品的功能和品质,保障忆联可以持续为客户提供高品质SSD产品与存储解决方案。
一次性事务具有事务优先级功能。OS接受一次性事务调度请求◆★■,通过高优先级来处理系统里一些紧急事务■★■■◆★,以此达成特定事件的实时处理★◆■★。
前面已经讲述在忆联OS里,同一个CPU里事务之间不会出现抢占,只有当一个事务运行完成后◆★■◆◆■,才会运行另外一个事务◆◆■★■,但是中断依然具有抢占功能。
通用的OS功能很多★■★◆■,包括处理器管理■■、内存管理◆★★、设备管理、文件管理■◆◆■■◆、作业管理等,而对于嵌入式OS来说■★◆★,主要聚焦在处理器管理、内存管理等核心功能上★■★◆◆★,本文则重点阐述处理器管理■★■★■、互斥、通信★◆◆■◆。
在多处理器、多Cluster架构下,业务部署时可以选择SMP模式、AMP模式、或者SMP和AMP混合模式。在SSD系统里★■■,基本上都是SMP模式和AMP模式混合,OS要负责程序调度■■■、互斥、通信功能。在嵌入式系统中的AMP模式的通信■★◆■■,可以类比为通用系统里多进程之间的通信,因为没有全局数据可用,要借助外部存储空间进行通信。
接收方的IPC中断程序读取DDR里的通信数据,然后发送事务消息到自己的OS,OS按照事务进行调度处理该事务消息。
企业级SSD需要在大量企业数据读写下保持超高稳定性,以及24 小时全天候运行,SSD的读写速度◆■◆、使用寿命、稳定性及可靠性是企业级用户关注的重点。为满足用户对企业级SSD高性能、低延时、轻量级■★、高可靠等需求◆■★★◆■,忆联设计并开发了适合SSD的嵌入式操作系统(Operating System,缩写:OS)★■■★◆,并在其上构建了可复制性强的SSD 控制器软件系统。
(3)同一个CPU,事务串行执行。一个CPU里的事务,一定是执行完毕一个事务后,才能开始执行下一个事务■■■。同一个事务◆◆◆◆,在一个CPU上不会重入◆◆。
中断处理程序实现时,可分为中断上半部和下半部。上半部读取外设数据■◆■,下半部发送事务消息到OS调度处理★◆■★★■。中断下半部的互斥就变成了事务之间的简单互斥方式了贝斯特2288超豪华游戏。中断发给OS的事务调度消息◆★★,可以根据需要选择使用“紧急★◆、高、常规”优先级★■◆。
中断处理程序遵循常规的中断处理流程,中断到来时,还是会抢占当前事务。当中断到来时,OS会把当前运行的事务程序压栈★◆★,跳转到中断处理程序运行■★,中断处理程序完成后,被中断的事务程序被恢复运行★◆◆◆◆★。
常规的OS调度对象都是线程,且每个线程有自己的堆栈和优先级,具有抢占机制。忆联在设计SSD嵌入式系统时■◆,通过分析发现,线程调度开销大、线程之间存在较为复杂的互斥问题■■、容易出现优先级逆转死锁问题★■■■◆★,加之线程运行的随机性和无序性,让系统时刻处于“不确定◆★◆■”状态。因此,忆联SSD选择了自创的“功能代码(入口函数及其调用的全部函数)”调度策略。为了描述方便,本文把这些可以被OS调度的■■★■◆★“功能代码(入口函数及其调用的全部函数)■★◆★”■■◆◆◆,称为SSD系统里的■★“事务”★◆。
(1)不会阻塞。一个事务完成一个特定的计算■◆■,它在计算过程中★◆■★◆◆,不需要等待外设动作,会一直运行到结束★◆。如果一个流程会被阻塞,则需要在阻塞点切分为多个独立的事务★★。一旦一个事务被CPU执行,则一定会执行到事务结束。在系统里,除了每个CPU正在执行的事务是运行状态■◆◆■★★,其他事务都处在结束状态★◆■■★■。比起线程的阻塞状态■◆★■◆,事务状态变得极其简单。
嵌入式软件分为三个层次◆★◆◆■,即驱动层★■★、OS层、业务层。业务层集结了庞大复杂的产品功能■■■◆■,负责处理业务逻辑的部分,通常包括接口协议、业务功能实现◆★■★、系统数据保存等;驱动层把设备的硬件访问抽象成软件接口,为OS层和业务层服务;OS层为业务层提供软件平台服务,让业务层可以聚焦在实现庞大复杂的软件功能上◆■◆★。
中断处理程序读取DDR里的通信数据,就是中断上半部。读取通信数据并做具体处理,则是事务完成,是中断的下半部。
(2) 事务共享堆栈。事务执行完成时,不再有局部变量需要保存在堆栈里★★★◆◆■。 事务共享堆栈,堆栈需求小■★★,调度时也没有了堆栈切换的开销■◆★★。
在SSD系统里的程序,不再以线程方式组织,而是以一个个不会阻塞的独立“事务处理流程”方式组织◆★■★■■。这些“事务处理流程”可以以各种方式被OS调度。