首先解释语态.这句话用了虚拟语气,表示一种猜测,所以由语法采用完成时;而用了"must"表明这种猜测比较准确,也就是“八九不离十”的感觉.类似的例子:
It must have rained last night.(猜测昨天晚上应该下过雨)
虚拟语态也可以表示“应做而未做”或者“不应做而做了”的意思.比如:
I should have given it to you.(言外之意是But I didn't)
You needn't have done this for me.(换句话说You have done it for me already.)
以虚拟语态的语法规定,这些情况下都要用完成时.
然后再讲it做形式主语.
在你说的这句话里,it是指代前文说过的某件事情(就是那个"he"忘了的事情),而不是形式主语."it"作形式主语的句子,其真正的主语一般都是非谓语动词或者名词性从句,句子结构是把"it"放在句首,后面句子成分照常,最后出现原来的主语,比如:
It is too hard for me to handle it.
It seems so despair to persuade him.
It doesn't matter who you are, but it does matter who you love.
回到你那个句子里.这句话里的it是实意主语,也就是所谓的“真正的主语”,而不是替主语“占座”的.所以它不是形式主语.
有个简单的方法看it是不是形式主语,就是把it拿后面的非谓语动词或者名词性从句(如果有的话)替换掉.如果句子没有什么语法问题(当然,不通顺是正常的,要不然要“形式主语”就没用了)的话,it就是形式主语.
说了这么多,会不会有点啰嗦?反正希望能对你有所帮助吧!