EPRIME的时间精度问题原理.docx
《EPRIME的时间精度问题原理.docx》由会员分享,可在线阅读,更多相关《EPRIME的时间精度问题原理.docx(16页珍藏版)》请在冰豆网上搜索。
EPRIME的时间精度问题原理
E-PRIME的时间精度问题(原理)
E-PRIME的时间精度问题
张豹2006-2-22
E-PRIME经过一系列的测试,包括在用英特尔处理器的奔腾(Pentium)系列和赛扬(Celeron)系列的台式机和笔记本电脑,处理器从60MHZ到现在的GHZ,结果发现当机器大于120MHZ时,E-PRIME能产生毫秒计精度的时间。
E-PRIME采用微秒的时钟进行计时。
相对于一定的外部硬件,这种时间精度的测试是稳定的。
影响时间的一些计算机常识问题:
完全精确到毫秒的计算机是没有的,一般的计算机的操作系统的任何程序的运行会占用时间,即使一个程序是在读取一个毫秒精度的时钟,这个精度也只是说明准确性只是真实地反击了计算机是完全自由地读取时钟。
当一个软件在现代操作系统上运行时经常会出现这样的情况:
序列地读取时钟之间的差异通常会大于1ms。
因为硬件上的时钟是独立而且连续地运行的,所以这种结果只有可能是由于程序在运行时会有一些时钟停顿地读取。
(其中涉及的概念:
“misstickrate”——通过软件读取时间TICK时所缺失的时间百分比。
其中最大的时间缺失为“maximummisstickdauation”)
Operationally,E-Primedefinestheinterpretationofmillisecondprecisionastheabilitytoreportanyreactiontimeortimingdurationsuchthat:
E-PRIME对毫秒级精确度的操作定义是能够报告任何如下的反应时间或是持续时间的能力:
1.ameasuredandreportedtimingprecisionstandarddeviationislessthanhalfamillisecond.一个测量和报告的时间精度标准差少于0.5ms。
2.recordingsarewithinamillisecondfromthetimetheyareavailabletocomputerhardware.Whenerrorsoccur,theyshouldbedetectable,shouldnotincreasemeasurementvariancebymorethan1ms2.Theinvestigatorshouldhaveamethodavailabletoidentifyandfilterouttimingdatathatisinerror.
3.screenrefreshes(displaysofthefullscreen)canbetrackedwithoutmisses99.9%ofthetime,andmissescanbedetectedandreported.
ComputerRecordedVariance=HumanVariance+MeasurementVariance
一般相对于HumanVariance来说,MeasurementVariance(在EPRIME中少于1ms2)所占的比例很小,可以忽略。
ProblemsReportingTimingAccuracyinComputerizedBehavioralResearch
影响行为研究时间精度的一些问题:
1.Computeroperatingsystemscanfalselyreporttimingdata.
2.Actualdurationscanbesignificantlylongeranddeviatefromtheintendeddurationsspecified.
3.Displaysareaccomplishedviarefreshcycles.Refreshcyclesarerarelymultiplesofthe
assumedthatthespecificationsprovidedbythehardwaremanufacturerprovidetheprecisionthatyouneed.Forexample,ifthemonitorspecificationssay72Hzat1024x768,thatnumbermightbeoffby50%dependingontheinteractionoftheoperatingsystem,displaydriversoftware,monitor,andhardwareconnectiontothemonitor(e.g.,presenceofaUSBport).Thepointoftheaboveexampleisthattheexperimentermustmeasurethesystemandnotdependonthe“manufacturerspecs”toprovidetimingdatawiththevalidityandprecisionneededforprofessionalpsychologicalresearch.
问题二、Actualdurationscanbesignificantlylongeranddeviatefromtheintendeddurationsspecified.(真实的持续时间会显著地长于、偏离指定的想要的持续时间)
图:
当刺激呈现200ms时,用表所记录到的真实时间(人为记录而非机器记录)
(总的平均时间(305ms)比设定的时间(200ms)多出105ms)
为什么会出现这样的误差呢?
因为程序指定的图片是贮存在硬盘上的,设置每一个要呈现200ms。
为了实现这一指令,计算机要从硬盘上读取图片数据,准备呈现图片,然后复制图片到显示屏,持续200ms,再先循环下一下图片的呈现。
其中的时间包括从硬盘上读取图片的时间,准备呈现的时间和复制到显示屏的时间,这总共平均要花费105ms。
因此,这样呈现图片总共需要的平均启动时间就要105ms,再加上指定的呈现时间200ms,这样一共为305ms。
这有一个需要解决的问题:
计算机在呈现一个刺激时不需要准备时间和一些启动时间。
因此必须是在被试注视当前的刺激呈现的时候下一下要呈现的刺激就已经开始启动了。
E-PRIME是如何解决这一问题的呢?
在E-PRIME中是用PreRelease来解决这一问题的,这一设置可以在呈现当前的刺激时释放一些运行的时间(aportionofexecutiontime)给下一个刺激,以使下一个刺激进行启动激活(例如读取硬盘上的数据,在内存中准备图片的呈现)。
当到达下一个刺激指定的呈现时间时,刺激显示已经准备完毕,只要复制到屏幕上就可以了。
通过将下一个刺激的启动时间与当前显示呈现时的时间有一部分重叠,这样由启动所耽误的时间就可以得到减少和消除。
如果PreRelease时间比所要求的启动时间要长时,图片就能没有任何耽误地被上载和呈现,例如当PreReleasetime为150ms时就可以有足够的时间来进行启动,就没有增加其他的变异。
问题三、关于3.Displaysareaccomplishedviarefreshcycles.Refreshcyclesarerarelymultiplesoftheintendeddisplaydurationandcannotberestartedduringanexperiment.和4.Accuratelymeasuringandreportingtiming,thendebugginganexperimentcanbedifficult.所引起的时间误差则与持续时间的峰(spike)有关。
为什么有一些显示很长?
为什么他们会发生在随机的时间间隔中,尽管是在完全相同的条件下也会发生变化?
峰是因为WINDOWS操作系统控制机器,中断程序来完成不同的管理的(administrative)和/或清洁(clean-up)事件。
操作系统在没有任何指示(除了是短暂地没有响应情况下)会控制和中止程序。
当操作系统完成诸如管理内存(计算机中的一种用于储存或从硬盘中重新上载以提供更有效率的地址空间)时就会停止一段时间,这个时间可以是几毫秒也可以是几百毫秒。
这些过程可以发生在任何时候,这些过程会随机出现是由于当操作系统完成一个过程是依赖于计算机启动后同时运行的其他所有的事件的。
例如当正在读取一个比较大的词语加工文件时,大部分的真实内存(realmemory)就会被占用。
如果此时你运行实验程序,程序就会开始读取文件中的图片,可能只有足够14张图片所用的空间,那第在读取先前的14张图片时就会以快速的速度来读取,因为系统还有足够的内存来存储,当到第15张图片时,操作系统就没有新的内存空间来存储了,操作系统这时就会决定保存一部分词语加工的文件到硬盘上以腾出空间。
因为这是操作系统管理程序来决定腾出空间,就会比其他程序有更大的优先权来运行,因此实验程序就会被中止。
这种操作系统用来产生空间和扫描系统来完成不同的内部管理的操作会占用数十甚至上百毫秒的时间。
在这个时间里,实验程序中止了。
之后实验程序又会开始读取图片,然而也会再次停下来以产生空间。
在E-PRIME中是如何来解决这一问题的呢?
在E-PRIME中是通过以下几种方法来解决的:
1,我们告诉操作系统在收集数据时以最大的优先权来运行E-PRIME。
2,我们使所有的刺激显示在呈现之前从屏幕上消失,使提前上载或缓冲刺激以减少操作系统的开销和避免在运行过程在直接从硬盘上读取数据。
3,最重要的是,我们持续地监控系统以观察有没有由操作系统在临界时间事件时的执行干扰导致的时间延迟。
(运用E-PRIME时的图,采用E-PRIME中的PreReleaseandPreloading,设置的时间为200ms,实际测得的时间为200.057ms。
接近200ms。
)
E-PRIME能够以很高的频率来呈现刺激显示(在适当的硬件时可以以每个刺激12ms的速度呈现,甚至更少)。
问题3:
显示是通过刷新周期来完成的。
计算机显示器是通过从左上角开始,水平地隔行地painting像素,然后移动到每二行再继续扫描像素来完成的。
连续地扫描一个全屏像素称为一个刷新周期(refreshcycle),一般要10-18ms(刷新时间refreshduration)。
刷新周期的开始被认为是一个垂直空白事件(verticalblankevent),当打到屏幕上的电子枪从右下角到屏幕的左上角时再次开始一个刷新。
计算机能能感觉到垂直空白事件是为了使计算机事伯与显示中发生的东西同步。
显卡,显示器和屏幕的设置(比如说分辨率和颜色深度)决定了刷新周期或刷新速度。
当VIDEOCARD设置改变到一个新的设置时,显示器通常会闪烁几百毫秒。
如果改变的时候要花很长的时间,会引起视觉伪迹时,实验中通常不改变刷新速度。
在一个CRT显示器上,在刷新周期过程中,视频显示硬件激活每一个像素一小段时间(大概每个刷新周期3ms)。
上图表示一个典型的眼睛注视屏幕中央的一个像素时的情况。
这个例子是呈现一个注视点,探测,一个掩蔽(“+”,“CAT”,“***”)。
假设对视频写入数据发生在垂直空白期间(例如在0ms,14ms和28ms)。
那么中央像素点(第384行)就会在大概7ms,21ms和35ms时被刷新和显示。
这里面涉及到的三个比较重要的问题:
1,你不能随意(随时)地上载或是移离屏幕上的显示刺激。
显示呈现或是移离只有在下一次刷新周期来临之时才可以。
例如刷新周期是14ms,显示就会在从垂直空白时间0,14,28……ms之间才会变化,实际显示的刺激是在其中的一半的时间时变化的(在7,21,35ms……)
2,持续时间小于一个周期的显示可能是看不见的,这会随刺激的位置而变化。
例如在上例的实验将注视点的时间呈现在垂直空白事件的时间,探测词“CAT”在5ms后呈现,最后在5ms后再呈现掩蔽“***”。
假使是指定这样的时间设置,注视点+实际上被试是看不到的。
显示器会在7ms时呈现”CAT”,21ms时呈现“***”(看图5)。
这是因为注视点+被“CAT”给重叠了(因为中央像素在第一次刷新中都是发生在7ms,但是“CAT”指定出现在5ms,比刷新到这一位置的像素早2ms了。
)
如果刺激的位置改变一下的话,被试就可以看到完全不同的显示序列了,例如将刺激呈现在接近屏幕顶端的地方而不是中央,被试就会看到“+”和“***”.这是因为在刷新启动之时刺激”+”就会呈现,而刺激“CAT”则被重叠了。
第三个问题是刺激指定为一定持续时间通常会发生变化。
如果一个刺激的持续时间指定为200ms,这个数值不是刷新速度的整数倍,这个持续时间就会随着一个刷新周期而变大或是变小。
例如iftherefreshrateis73.1Hz(arefreshdurationof13.67ms)andthespecifieddisplaydurationis200ms,thesubjectwillseedurationsthatareeither191.3ms(14refreshes)or205.0ms(15refreshes).Sincetherequestedduration(200ms)is63%ofthedistancebetweentheonsettimesofthetworefreshcycles(191.3and205.0),63%oftherefresheswillbeat205msand37%at191ms.
计算公式:
DifferenceinDuration=SpecifiedDuration–LowerBoundDuration
PercentageofRefreshes=DifferenceinDuration/RefreshDuration
DifferenceinDuration=200ms–191.3ms=8.7ms
PercentageofRefreshes=8.7ms/13.67ms=0.63=63%
怎样在E-PRIME中实现时间精度
E-PRIME提供了毫秒级的精度以及精确的解释和时间的报告的工具。
一、在E-PRIME中的一些基本的技巧和方法来提高时间精度
实验的复杂性程度是随着实验的要求而改变的,如果实验要求的只是呈现一个给定的刺激,收集从刺激呈现开始的反应时间,就简单一些了。
如果是要求考虑显示之间的时间,精确的短的显示呈现,呈现刺激以一定的速度,或与外部的设备同步(脑电波设备等),这就需要掌握更多的时间概念方面的知识。
技巧一、用PreRelease
计算机能够要求一个比较长的时间来准备刺激的呈现,对下一个刺激的准备时间必须在当前呈现的刺激呈现时完成,这样就能够避免刺激事件间的时间延误。
很多的影响时间精确度的原因是错误地假设为刺激呈现的准备时间是可以忽略的。
下表列出了各种指定时间的刺激的准备时间(刺激呈现100ms)
1.当假设准备时间为0ms时,刺激序列启动的时间间隔恰好是100ms,但假定准备时间为0是不可能的。
2.当给予30ms的准备时间时,刺激序列启动的时间间隔不等。
3.当采用ReRlesease时,刺激序列启动的时间间隔为100ms。
ReRelease的原理:
在前一个刺激呈现之时就开始准备第二个刺激的呈现,也就是说在第一个刺
激呈现的同时完成对第二个刺激的准备时间。
这样在第二个刺激呈现时就只要直接复制到屏幕上即可,不需要有一个准备时间的延迟。
(如下图所示)
在E-PRIME中,刺激呈现与反应加工是同时发生的,这就是说虽然下一个刺激可能在当前刺激呈现时就准备好了,任何在第二个刺激真正呈现之前的输入都会按照第一个(当前)的刺激的设置进行记录(例如反应总是依照提示反应的刺激来记录的)。
一般PreResease值设置在100ms到200ms比较合适。
在使用PreResease时应注意的一些问题:
1.如果你在一个后面紧随着是FEEDBACKDISPLAY客体的客体中使用PreResease,会有一个时间持续的窗口,被试要反应并显示错误反应,这是因为反馈客体会在前一个客体的PreResease时间里会读取反应数据。
例如一个探测刺激呈现,在1000内接受反应,指定一个100ms的PreResease。
反馈窗体就会开始运行,在呈现探测之后900ms准备显示刺激。
在那时,反馈就是检测最后反应的准确率与反应时间,选择一个信息(correct,incorrect,noresponse)显示。
如果被试恰好在刺激呈现的901到1000ms之间的任何一个时间反应,反馈在先于反应接受之前已经开始准备了,因此,反馈的结果呈现给被试的是“noresponse”,而实际上反应已经被害人接受了,而且已经记录了。
只是给予了被试一个错误的反馈。
为了避免这种错误的反馈给被试,推荐设置这样随后出现反馈的客体的PreResease为0ms。
这样只会延迟反馈出现的时间。
通常用来启动的时间是小于300ms的,反馈一般不被认为是一种关键时间的事件。
当然我们也可以通过调整反应输入的时间限制,这样PreResease时间与反应时间就不会重叠。
总之,在用PreResease与反馈时一定要注意。
2.当使用PreResease时,PreResease机制只能有效地用于当前刺激客体在持续时间结束之前没有被清除。
这是因为客体在他的指定的持续时间满了时会自行清除,这样刺激的清除可能会发生的太早(例如在PreResease开始的时间)。
在实际运用时这并不是一个问题,因为通常是序列中的后一个客体的扫描完成来清除当前刺激。
3.PreResease时间不能用于当E-PRIME中的客体是由反应输入中止的情况(因为系统不可能预测被试何时进行反应),但这也通常在大多数的程序中不是一个问题,当一个显示被中止时,随后的显示通常不会被认为是严格时间的事件(因为被试的反应中止的时间是有差异的,所以随后的事件通常不可能是严格要求时间的事件)。
技巧二、与显示器的刷新频率同步
我们必须经常使呈现的刺激是显示器刷新频率的整数倍,这样就能使刺激呈现与刷新周期是同步的。
为了理解这一技巧的作用,我们来考察视觉刺激在显示器上呈现的方法。
虽然图片实际上是通过光束扫描屏幕形成的,我们可以想像成计算机是通过以一定的速率让静止的图片系列地呈现。
以这样理解的话,显示就如同动作电影,每一部分以每秒60至80个的速度。
呈现时间是以这些刷新周期为单位的。
刷新频率在E-PRIME程序中是固定的。
呈现显示的持续时间为刷新周期的整数倍的概念有几层含义:
认识到显示的启动时间与刷新周期是交互的,你必须决定你是否要将事件的启动时间与下一次刷新的时间是同步的(这在E-PRIME中是默认的)。
有效的显示持续时间(也就是被试看到刺激的总的时间)总是刷新时间的整数倍。
指定命令与垂直空白事件同步会使实验增加延迟。
如果你启动一个实验中有三个刺激显示,设置它与下一个刷新周期同步,显示将会在至少一个周期后才会呈现,例如刷新持续时间为14ms,71.4HZ的刷新频率,三个刺激显示设置成0ms时将要花旨42ms(3×14)。
如果设置刺激显示的呈现不与刷新周期一致,计算机就会在下一下空白之前准备所有的三个图片,被试就只会看到显示的闪烁。
由此可见如果你真正地想要同时呈现多个刺激,在E-PRIME中使用Slideobject(Slideobject能以同样的刷新周期呈现文本,图片和声音)。
所有E-PRIME刺激呈现客体都能通过客体属性来设置与刷新频率同步,刺激呈现客体的属性中的同步表格中可能使使用者指定是否让下一个刺激的启动时间延迟到下一个垂直空格事件。
当启动同步属性设置为垂直空格,客体就会延迟到下一个垂直空格才会呈现刺激。
使用者可以通过不同的属性(onsetsyncandoffsetsync)将启动和消除(移离或清除)刺激客体都可以设置为同步。
默认的是刺激呈现客体的启动刺激与垂直是同步的,而offsetsync则是“none”,因为显示通常还没有被清除,但是会被下一个刺激所取代。
技巧三、选择一个合适的时间模式(E-BookPage96)
在实验中发生时间延迟主要是因为操作系统的需要,延迟以用来准备刺激,刷新周期。
用上面二种技巧可以避免这种延迟,但是他产始终会在实验中存在,这种时间延迟只可以减少,而不可以完全消除。
所有我们必须懂得这些延迟会发生,以决定如何应用计算机来对之进行相应的补偿。
例如:
见下图中呈现四个刺激显示,每个呈现100ms,操作系统会占用20ms,同时在第二个显示准备之前中止程序来完成这些事件。
这就会产生一些时间误差。
E-PRIME提供了一些时间模式以让编程者来解决这一问题。
事件模式时间
在事件模式中,一个事件的启动延迟不会影响指定的事件的呈现时间。
由于这种误差,这会导致所有的序列事件的启动的延迟(见上图),也就是事件在积累的时间误差。
(注:
事件模式不会影响事件呈现的持续时间,但是会影响事件出现的时间)。
例子:
5个刺激均呈现100ms,第二个刺激与第四个刺激之前分别有一个20ms与30ms的延迟,则这五个事件呈现的时间分别为0,120,220,350,450ms。
事件呈现的时间还是100ms,但是启动的时间却发生了变化。
累积模式时间
在累积模式中,事件启动时延迟导致事件相应持续时间的减少,但是累积的时间误差就会减少。
(注:
累积模式减少的是事件的呈现时间,而事件出现的时间——事件序列的累积时间——不会变化)
例子:
5个刺激均呈现100ms,第二个刺激与第四个刺激之前分别有一个20ms与30ms的延迟,这样在累积模式中第二个事件的持续时间会变为80ms,第四个的持续时间变为70ms,它们的启动时间分别为0,120,200,330,400。
累积时间模式在实验中有一些缺点和限制:
1.如果一个不可预料的时间误差或延迟足够长(或是刺激呈现的持续时间很短),那么在当前刺激呈现的过程之中就没有足够的时间来消除(absorb)这个时间误差。
如果是这样,所有的随后的呈现就可能会减少持续时间直到所有的累积错误完成。
例如:
一个呈现14ms的刺激不可能减少一个20ms的延迟,这样这个刺激就会尽可能多地减少它的呈现时间,然后下一个刺激也会尽可能多的减少持续时间直到20ms的时间误差完全消除,刺激呈现序列才会也预想的刺激启动时间同步。
2.如果一个刺激被被试的反应中止时也会干扰时间序列。
如果是这样,E-PRIME假定使用者想让下一个刺激在当前事件被中止后立即呈现。
E-PRIME在处理这样的情况是让下一个刺激呈现启动的时间为反应的时间而不是原来程序所期望的时间(即反应中止的时间也就是下一个刺激启动的时间)。
这对于事件模式时间来说也有同样的效应。
由于这种原因,我们推荐刺激呈现不设置为由反应中止。
习惯模式时间
这是E-PRI